【问题标题】:how to apply the center of image view for another image view center如何将图像视图的中心应用于另一个图像视图中心
【发布时间】:2010-03-15 12:05:04
【问题描述】:

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

【问题讨论】:

    标签: iphone uiimageview translation rotation scaling


    【解决方案1】:

    您的视图或图像是

    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)。

    【讨论】:

    • 感谢回复,缩放后我无法找到与原始相关的中心..
    • 缩放后我可以居中,但现在如何知道原来的位置
    • 您只需要进行相反的转换:例如,如果您从 1280X1024 开始并获得缩放的 1024X768 图像,那么您的缩放中心在位置 (640,512) 您的原始中心只有在你知道应用了什么缩放函数。
    • 是的,我知道缩放功能,那么如何从缩放中心获取原始中心
    • 例如:我的框架首先是 (320*480),它的中心是 (160*240),缩放后它的框架是 (1008, 1512),现在缩放值为 (1.2 ,1.2)那么我怎样才能获得原始(320 * 480)中心
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2011-03-04
    相关资源
    最近更新 更多