2009-11-28 60 views
0

关于iPhone SDK:如何确定在UIImageView中裁剪大图像的图像坐标?

我有一个512 x 512像素的.png图像,我希望在200 x 200像素的UIImageView中进行裁剪(以原始分辨率,无缩放,拟合或回转)。有没有一种方法可以确定在UIImageView中可见的图像坐标?例如,如果图像在UIImageView的正确中心,那么我想知道图像的坐标是在UIImageView的(0,0)和(200,200)点上,这将是(156,156)和(356,356)分别显示正在显示的图像。

我打算在某些时候实现“pan”和“zoom”功能,但我想知道如何首先解决这个问题。 UIImageView类的参考似乎没有帮助...我希望避免使用UIView,但如果这是必要的,我会走那条路。

谢谢!

回答

0

感谢您的帮助。在实现UIScrollView之后,计算平移/缩放功能变得微不足道。实现UIScrollView让我用myScrollView.bounds.origin.xmyScrollView.bounds.origin.y值来确定我需要的坐标......放大仍然需要计算 - 如上所述,但我现在处于正确的轨道。

这里是我用来做UIScrollView的代码(基于多源可在网上与本网站 - 苹果公司的ScrollViewSuite特别有帮助这里是我在我的程序的(void)viewDidLoad部分使用的代码,希望别人能。觉得它有用:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images... 
[self setMyImage:tempImageView]; //myImage is of type UIImageView 
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image... 
[tempImageView release]; 

myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height); 
myScrollView.maximumZoomScale = 10.0; 
myScrollView.minimumZoomScale = 0.15; 
myScrollView.clipsToBounds = YES; 
myScrollView.delegate = self; 

[myScrollView addSubview:myImage]; 
0

你对UIImageView引用中所见的东西是正确的 - 没有简单的方法可以单独使用UIImageView。你需要考虑诸如UIImageView的contentMode之类的东西,或者限制自己只计算单个UIViewContentMode的位置。但是,当您最终实现平移和缩放时,您将使用带有UIImageView的UIScrollView作为该UIScrollView的子视图。在这一点上,将UIImageView初始化为您显示的任何图像的大小(可以是动态的)将是最理智的。然后,您可以通过确定图像的位置来确定图像的位置,这是您可以更简单地完成的任务,并且只需要一点数学。