1

使用 drawInRect 我得到不一致的结果

有时图像绘制正确,有时图像看起来像差了半个像素:

在此处输入图像描述

在左上角,您会看到滑块的 cap 图像正常绘制,然后填充具有模糊的边缘,即使它们是使用相同的 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];

左下箭头,同样的情况。

中心右箭头,类似情况。您可以看到左盖图像正确渲染,然后背景填充(1 像素宽的图像)变得模糊。

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

感谢您的任何见解。

4

1 回答 1

0

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

对于我使用的某些区域colorWithPatternImage

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

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

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

于 2012-11-28T08:34:55.467 回答