使用drawInRect我得到不一致的结果
有时图像绘制正确,有时图像看起来有半个像素的偏差:
在左上角,您会看到 slider 的上限图像正常绘制,然后填充边缘模糊,即使它们是使用相同的 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 像素宽的图像)变得模糊。
我想知道这是否与拉伸(stretch)图像有关,因为我试图填充矩形的图像渲染效果似乎很差。
感谢您的见解。
最佳答案
如果您知道为什么drawInRect会扭曲图像,请留下答案。这是我发现解决这个问题的方法:
对于某些区域,我使用了colorWithPatternImage
NSColor* backgroundFill = [NSColor colorWithPatternImage:backgroundImage];
[backgroundFill set];
NSRectFill(background);
我遇到的问题是图案原点设置为窗口而不是 View ,因此有时图案会错位。
对于几个区域,我使用了NSDrawThreePartImage
,它可以正确平铺图像而不扭曲图像。即使我没有 3 张图像,我也只是将同一张图像放入 3 次。
关于objective-c - Mac 应用程序 - NSImage drawInRect 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599656/