2011-06-04 36 views
6

我正在绘制自定义按钮/文本框与NSDrawNinePartImage。我将代码中的图片分成九个部分,并将其绘制到NSDrawNinePartImage的矩形中。NSDrawNinePartImage间隙

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

我相当确信它归结为实际绘图。

你知道任何NSGraphicsContext或其他会影响它的设置或其他可能导致这种情况的设置吗?

有了差距

With gaps

无间隙

Without gaps

+0

我发现在我的项目之一同样的事情定了类似的问题。我已经保存了这些图像,并在NSDrawNinePartImage中将它们绘制在一个新项目中,并且它们画得很好。但是,当我将它们绘制在我的自定义按钮中时,它们存在差距。 – 2011-06-04 17:29:59

+0

你确定你正在绘制像素边界吗?在第一张图片中,看起来像是在第二张图片中看不到的一些亚像素渲染。 – kperryua 2011-06-05 01:26:27

+3

由于我的回答被删除了,我会在这里回答你的后续问题。在你绘制九部分的地方,在你传递给'NSDrawNinePartImage'的框架上使用' - [NSView convertRect:toView:nil]'并打印出结果。如果有任何非整数值,那么这可能是你的问题的原因。使用类似' - [NSView centerScanRect:]'来确保矩形只是像素边界。 – kperryua 2011-06-06 15:42:08

回答

1

有没有可能是你的左上和右下图像像素太宽?

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

0

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

4

我通过禁用抗混叠选项

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