NSDrawNinePartImage 间隙

发布于 2024-11-13 06:02:45 字数 486 浏览 3 评论 0原文

我正在使用 NSDrawNinePartImage 绘制自定义按钮/文本字段。我在代码中将图像分割成九个部分,并使用 NSDrawNinePartImage 将其绘制到一个矩形中。

不幸的是,我在绘图模式中发现了一些空白。我认为这与我的切片代码有关,但我将它们保存为切片时的图像,它们看起来都不错(我什至将它们放在一起,看起来也不错)。在某些情况下,尽管有些使用相同的图像,但我使用它工作得很好。

我非常有信心这取决于实际的绘图。

您是否知道任何 NSGraphicsContext 或其他会影响它的设置或可能导致此问题的其他原因?

有间隙

有间隙

无间隙

“无间隙”

I am working on drawing custom buttons/textfields with NSDrawNinePartImage. I slice up an image into nine parts in code and draw it into a rect with NSDrawNinePartImage.

Unfortunately I am getting some gaps in the drawing pattern. I thought it had something to do with my slicing code, but I saved them out as images from where I slice them, and they all look good (I even put them together and they looked good). Some of the cases where I use it to work just fine though despite some using the same images.

I am pretty confident that it comes down to the actual drawing.

Do you know of any NSGraphicsContext or other settings that would affect it or something else that may be causing this?

With gaps

With gaps

Without gaps

Without gaps

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ぺ禁宫浮华殁 2024-11-20 06:02:45

我通过禁用抗锯齿选项修复了类似的问题

NSGraphicsContext* theContext = [NSGraphicsContext currentContext];
[theContext saveGraphicsState];
[theContext setShouldAntialias: NO];
NSDrawNinePartImage(...);
[theContext restoreGraphicsState];

I fixed a similar issue by disable the anti-alias option

NSGraphicsContext* theContext = [NSGraphicsContext currentContext];
[theContext saveGraphicsState];
[theContext setShouldAntialias: NO];
NSDrawNinePartImage(...);
[theContext restoreGraphicsState];
倾城泪 2024-11-20 06:02:45

您的左上和右下图像是否可能太宽一个像素?

此函数使用左上角和右下角图像来
确定需要的边缘区域的宽度和高度
充满。如果左下角和右上角图像的宽度或高度
尺寸不合适,它们可能会缩放以填充其角落
区域。角之间的边缘区域使用相应的平铺
图像。同样,中心区域使用指定的中心进行平铺
图片。

Is it possible that your upper left and lower right images are a pixel too wide?

This function uses the top-left and bottom-right corner images to
determine the widths and heights of the edge areas that need to be
filled. If the width or height of the bottom-left and top-right images
are not sized appropriately, they may be scaled to fill their corner
area. Edge areas between the corners are tiled using the corresponding
image. Similarly, the center area is tiled using the specified center
image.

万劫不复 2024-11-20 06:02:45

在图像中使用均匀尺寸。我这样做了,它为我解决了这个问题。

Use even sizes in images. I did this, and it solved this problem for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文