2010-10-11 87 views
0

嗨, 我有一個大的圖像,然後即時通過提取所述圖像的一部分的:NSImage中座標

[mBaseImage lockFocus]; 
NSBitmapImageRep* bitmapImageRep = [[NSBitmapImageRep alloc] initWithFocusedViewRect: NSMakeRect(startX,startY,width,height)]; 
[mBaseImage unlockFocus]; 

後跟:

extractedImage = [[NSImage alloc] initWithSize:[bitmapImageRep size]]; 
[extractedImage addRepresentation:bitmapImageRep]; 

其中extractedImage NSImage中是*。

後來而我試圖繪製使用NSDrawNinePartImage的extractedImage,我意識到,雖然我在http://www.karlkraft.com/index.php/2007/11/14/nsdrawninepartimage/ 指定以下的例子中的9份我意識到,當我指定0,0它顯示的左上handcorner圖像,這意味着0,0是左上角而不是左下角,如鏈接中的示例所示。我嘗試設置setFlipped,但它似乎只是翻轉圖像。有沒有人有任何想法如何我可以將座標回到0,0在左下角?

哦,我忘了提及我使用圖像作爲按鈕,所以它作爲NSButton呈現。

問候, 漢

+1

你是什麼意思「它是作爲一個NSButton呈現」?無法將NSImage放入視圖層次結構中,那麼您對圖像執行的操作是什麼,以及「NSDrawNinePartImage」調用的對象是什麼? – 2010-10-11 08:23:31

+0

哦對不起。這是一個自定義NSButton的一部分。自定義的NSButton可以有一個NSImage。 drawRect被覆蓋以包含[image drawInRect:....];以便在顯示按鈕時繪製圖像。在drawInRect函數中,檢查是否設置了標誌useTile,如果是,則drawInRect將調用函數drawWithTiles並在將9張圖像傳遞給NSDrawNinePartImage之前對用戶定義的圖像進行適當分割。 – han 2010-10-11 08:52:44

+0

您正在遵循的示例將在分辨率無關的非整數比例因子下失敗。 : - 請處理您在網上發現的懷疑代碼。它應該使用NSBitmapImageRep作爲目標切片而不是NSImage,因爲該代碼特別與像素綁定。 – Ken 2010-10-11 19:40:03

回答

0

好吧,我發現了它。這是一個流氓[image setFlip:...]在代碼中導致所有的混淆..

+1

請注意 - [NSImage setFlipped:]已棄用。有關更多討論,請參閱http://developer.apple.com/library/mac/#releasenotes/Cocoa/AppKit.html上的AppKit發行說明 – Ken 2010-10-11 19:38:21