2009-11-28 59 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初始化爲您顯示的任何圖像的大小(可以是動態的)將是最理智的。然後,您可以通過確定圖像的位置來確定圖像的位置,這是您可以更簡單地完成的任務,並且只需要一點數學。