Android 根据用作纹理的位图原始尺寸的纵横比缩放矩形
我在Android中有一个矩形,我正在外部矩形中绘制另一个矩形。如何根据纹理位图原始尺寸的纵横比缩放RectFB 图片:Android 根据用作纹理的位图原始尺寸的纵横比缩放矩形,android,opengl-es,aspect-ratio,Android,Opengl Es,Aspect Ratio,我在Android中有一个矩形,我正在外部矩形中绘制另一个矩形。如何根据纹理位图原始尺寸的纵横比缩放RectFB 图片: 当尝试将缩放的矩形放置在另一个矩形中时,有两种可能:拟合和填充。第一个将留下一些未覆盖的边界,而第二个将填充整个矩形,但矩形的某些部分在矩形外不可见。在这两种情况下,矩形B的一个尺寸将与目标区域相同,这取决于比较两个矩形的比率和拟合或填充模式 像这样的事情应该可以做到: float pannelWidth, pannelHeight; float imageWidth, im
当尝试将缩放的矩形放置在另一个矩形中时,有两种可能:拟合和填充。第一个将留下一些未覆盖的边界,而第二个将填充整个矩形,但矩形的某些部分在矩形外不可见。在这两种情况下,矩形B的一个尺寸将与目标区域相同,这取决于比较两个矩形的比率和拟合或填充模式 像这样的事情应该可以做到:
float pannelWidth, pannelHeight;
float imageWidth, imageHeight;
float pannelRatio = pannelWidth/pannelHeight;
float imageRatio = imageWidth/imageHeight;
float outputWidth, outputHeight;
bool useFit = true;//set whatever
if(pannelRatio > imageRatio) {
if(useFit) {
//fit in width (width scale is 1.0)
outputWidth = pannelWidth;
outputHeight = pannelWidth*(imageHeight/imageWidth);
}
else {
//fill in height (height scale is 1.0)
outputWidth = pannelHeight*(imageWidth/imageHeight);
outputHeight = pannelHeight;
}
}
else if(pannelRatio < imageRatio) {
if(useFit) {
//fit in height (height scale is 1.0)
outputWidth = pannelHeight*(imageWidth/imageHeight);
outputHeight = pannelHeight;
}
else {
//fill in width (width scale is 1.0)
outputWidth = pannelWidth;
outputHeight = pannelWidth*(imageHeight/imageWidth);
}
}
else {
outputWidth = pannelWidth;
outputHeight = pannelHeight;
}