2012-12-24 99 views
3

我使用這2個NSImages結合:NSImage中-drawAtPoint:繪製太小

newImage = [[NSImage alloc] initWithSize:NSMakeSize(size1.width, 
                size1.height + size2.height)]; 
[newImage lockFocus]; 
[firimage drawAtPoint:NSMakePoint(0, 0) 
      fromRect:NSMakeRect(0, 0, size1.width, size1.height) 
      operation:NSCompositeSourceOver 
      fraction:1.0]; 
[secimage drawAtPoint:NSMakePoint(0, size1.height) 
      fromRect:NSMakeRect(0, 0, size2.width, size2.height) 
      operation:NSCompositeSourceOver 
      fraction:1.0]; 
[newImage unlockFocus]; 

它導致的圖像與適當大小(2 100x63圖像導致100x126的圖像),但兩單獨的圖像繪製方式太小,所以產生的圖像大多是空白:

Screenshot

這裏是原始圖像:

Image 1 Image 2

+1

您的目標系統是什麼?你知道'compositeToPoint:'在OSX10.6 +中被棄用了嗎? – foundry

+0

你可以顯示你的代碼使用NSBitmapImageRep? – foundry

+0

它不被棄用,但你說得對,我不應該使用它。 – Fatso

回答

1

我看到你解決了它。使用代碼時,我得到了類似的奇怪結果。所以我開始覺得我並沒有真正理解這些方法。

我通常總是用-drawInRect:fromRect:operation:fraction,雖然我不是100%如何影響結果,但我總是得到我需要的結果。

無論如何,我走了,做了一個小玩具的應用程序,以顯示互動修改rects(根據您的問題使用兩個圖像)的影響。

I've put it up on github,你可能想看看。

+0

哈哈哈!這是一個整潔的小應用程序!謝啦!!! – Fatso

0

正如我在評論中所說的,使用-drawInRect:fromRect:operation:fraction解決了這個問題!

+3

請注意,要繪製整個圖像,可以使用'NSZeroRect'的fromRect而不是'NSMakeRect(0,0,size1.width,size1.height)'。 – paulmelnikow