【发布时间】:2010-03-15 12:05:04
【问题描述】:
我正在开发图像重绘应用程序。我知道一个具有缩放属性的图像视图的中心。即它可以改变它的框架和中心。应用于另一个视图中心。当我将中心应用于新形成的图像视图时,它给出了错误的中心,因为以前的图像视图具有缩放属性。那么我怎样才能从以前的图像视图中获得新图像视图的精确中心
【问题讨论】:
标签: iphone uiimageview translation rotation scaling
我正在开发图像重绘应用程序。我知道一个具有缩放属性的图像视图的中心。即它可以改变它的框架和中心。应用于另一个视图中心。当我将中心应用于新形成的图像视图时,它给出了错误的中心,因为以前的图像视图具有缩放属性。那么我怎样才能从以前的图像视图中获得新图像视图的精确中心
【问题讨论】:
标签: iphone uiimageview translation rotation scaling
您的视图或图像是
width*height
您的中心视图应始终处于正确位置
(width/2,height/2)
图像是否缩放。 如果您需要“缩放”中心,则只需在缩放后重新计算您的中心,如果不需要,则将原始中心位置保存在内存中。
伪代码:
getCenter(w,h){
pos[0]=w/2;
pos[1]=h/2;
return pos;
}
calc(image){
c = getCenter(image.w,image.h);
scaled = image.scale(80); //That is 80% of original
d = getCenter(scaled.w,scaled.h);
if(something) return c;
else return d;
}
讨论后的第二次解释(阅读cmets):
假设您有一个 640X480 的图像,并且您创建了一个 320X240 的视图(它的四分之一),然后将此视图从通常位于图像左上角的位置 (0,0) 向右移动 100 像素并向下移动 50 像素那么:
您的新视图中心将照常位于视图的位置 (160,120)
原始图像的原始中心将保留在其位置 (320,240),该位置随意对应于您的 VIEW 的右下角。
如果您想知道原始图像的原始中心在移动和“裁剪”后最终在哪里,那么您只需要知道您将视图移动到哪里:
100px right becomes (original position - relative movement) (320 - 100) = 220
50px down becomes (original position - relative movement) (240 - 50) = 190
因此,您的原始中心将位于新 VIEW 的位置 (220,190)。
【讨论】: