Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSDrawNinePartImage间隙_Cocoa_Drawing_Appkit - Fatal编程技术网

Cocoa NSDrawNinePartImage间隙

Cocoa NSDrawNinePartImage间隙,cocoa,drawing,appkit,Cocoa,Drawing,Appkit,我正在使用nsdrawinnepartimage绘制自定义按钮/文本字段。我用代码将图像分成九个部分,然后用nsdrawinnepartimage将其绘制成一个矩形 不幸的是,我得到了一些差距,在绘图模式。我认为这与我的切片代码有关,但我将它们保存为图像,从中进行切片,它们看起来都很好(我甚至将它们放在一起,它们看起来很好)。在一些情况下,我使用它工作得很好,尽管有些使用相同的图像 我很有信心,这可以归结为实际的绘画 您是否知道任何NSGraphicsContext或其他会影响它的设置,或其他可

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

不幸的是,我得到了一些差距,在绘图模式。我认为这与我的切片代码有关,但我将它们保存为图像,从中进行切片,它们看起来都很好(我甚至将它们放在一起,它们看起来很好)。在一些情况下,我使用它工作得很好,尽管有些使用相同的图像

我很有信心,这可以归结为实际的绘画

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

有间隙

无间隙


是否可能是左上角和右下角的图像太宽

此函数使用左上角和右下角图像 确定需要调整的边缘区域的宽度和高度 填满。如果左下角和右上角图像的宽度或高度 如果尺寸不合适,则可能会缩放以填充其角 地区角点之间的边缘区域使用相应的 形象。类似地,使用指定的中心平铺中心区域 形象


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

我通过禁用反别名选项修复了类似的问题

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

我在我的一个项目中也注意到了同样的事情。我保存了这些图像,并在一个新项目中使用NSDrawNinePartImage绘制了它们,它们绘制得很好。但是,当我在自定义按钮中绘制它们时,它们有间隙。你确定要在像素边界上绘制吗?在第一幅图像中,似乎有一些我在第二幅图像中看不到的亚像素渲染。由于我的答案被删除,我将在这里回答您的后续问题。在绘制九个零件的地方,在传递给
nsdrawinnepartimage
的框架上使用
-[NSView convertRect:toView:nil]
,并打印结果。如果存在任何非整数值,则可能是问题的原因。使用类似于
-[NSView centerScanRect:
的方法来确保rect仅为像素边界。@kperryua好的,我会试试,谢谢你的信息。你的切片也是整数大小的吗?