2012-11-28 64 views
1

使用drawInRect我得到的結果不一致Mac應用程序 - 問題NSImage中drawInRect

有時圖像繪製正確,有時候圖像看起來就像他們是半個像素關:

enter image description here

在左上角,您會看到滑塊的上限圖像繪製正常,然後填充圖像的邊緣模糊,即使它們使用相同的x,y繪製...

// top cap 
[topCap drawInRect:NSMakeRect(5, 5, 11, 7) 
      fromRect:NSZeroRect 
     operation:NSCompositeSourceOver 
      fraction:1]; 

// background fill 
[topFill drawInRect:NSMakeRect(5, 12, 11, (CGRectGetHeight(aRect) - 23)) 
      fromRect:NSZeroRect 
      operation:NSCompositeSourceOver 
      fraction:1]; 

左下箭頭,同樣的情況。

中心右箭頭,類似的情況。你可以看到左圖像正確渲染,然後背景填充(1px寬的圖像)變得模糊。

我想知道它是否與拉伸圖像有關,因爲它似乎是我試圖填充矩形與渲染不佳的圖像。

感謝您的任何見解。

回答

0

如果你知道爲什麼drawInRect扭曲圖像,請留下一個答案。下面是我發現來解決這個問題的辦法:

爲我所用colorWithPatternImage

NSColor* backgroundFill = [NSColor colorWithPatternImage:backgroundImage]; 
[backgroundFill set]; 
NSRectFill(background); 

我遇到的問題,這是該模式起源被設置爲窗口不認爲一些地區,所以有時候這種模式會錯位。

對於我使用的NSDrawThreePartImage幾個區域,它們能夠正確地平鋪圖像而不會使其變形。即使我沒有3張圖片,我也只是放了3次相同的圖片。