objective-c - Mac 应用程序 - NSImage drawInRect 问题

标签 objective-c xcode cocoa

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

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

enter image description here

在左上角,您会看到 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/

相关文章:

iphone - 我陷入了 iPhone 配置的困惑之中——需要洞察力

xcode - 一旦我在代码和界面之间建立连接,我的选项卡就会崩溃(iOS SDK 4.2)

iOS/Swift : Keep "global" view pan from resetting other objects' positions, w/AutoLayout ON?

cocoa - 打开屏幕键盘

cocoa - NSKeyedArchiver 内部格式

ios - UITextView 提前断线

iphone - 带有 Objective-C 的 Google Reader API - 获取 token 时出现问题

objective-c - NSDate 和 NSTimezone 的时间错误

cocoa - 基于 NSDocument 的应用程序来读/写 sqlite 数据库

objective-c - 启动后写入 NSTasks 标准输入