Mac应用程序 - NSImage drawInRect的问题

时间:2012-11-28 07:09:05

标签: objective-c xcode cocoa

使用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宽图像)变得模糊。

我想知道它是否与拉伸图像有关,因为看起来我试图填充矩形的图像渲染效果不佳。

感谢您的任何见解。

1 个答案:

答案 0 :(得分:0)

如果您知道为什么drawInRect会扭曲图像,请留下答案。以下是我找到解决这个问题的方法:

对于某些地区,我使用了colorWithPatternImage

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

我遇到的问题是图案原点设置为窗口而不是视图,因此有时图案会不对齐。

对于我使用NSDrawThreePartImage的几个区域,它正确地平铺了图像而不会扭曲图像。即使我没有3张图像,我只是将相同的图像放入3次。