如何将图像视图的中心应用于另一个图像视图中心

时间:2010-03-15 12:05:04

标签: iphone uiimageview translation rotation scaling

我正在开发图片重绘应用。我知道一个具有缩放属性的图像视图的中心。即它可以改变它的框架和中心。要应用于另一个视图中心。当我将中心应用于新形成的图像视图时,它会给出错误的中心,因为之前的图像视图具有缩放属性。那么我如何从以前的imageview获得我的新图像视图的精确中心

1 个答案:

答案 0 :(得分:0)

您的观点或图片

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;
}

讨论后的第二个解释(阅读评论):

假设您有一个640X480的图像,并创建一个320X240的视图(四分之一),然后将该视图向右移动100px,从位置(0,0)向下移动50个像素,这通常是图像的左上角然后:

  • 您的新视图中心将照常查看视图中的位置(160,120)

  • ORIGINAL图像的原始中心将保留在其位置(320,240),该位置随意对应于VIEW的右下角。

  • 如果你想知道ORIGINAL图像DID的原始中心在移动和“裁剪”后最终的位置,那么你只需要知道你在哪里移动视图:

    100px right becomes (original position - relative movement) (320 - 100) = 220 
    50px down becomes (original position - relative movement) (240 - 50) = 190
    

    因此,您的原始中心将位于新视图的位置(220,190)。