核心图形笔划宽度在线条和弧线之间是否不一致?

mak*_*dad 6 macos core-graphics ios

用例:我将UIView子类化为创建一个自定义视图,该视图使用圆角矩形"遮罩"UIImage(将图像剪切为圆角矩形).代码正在运行; 我使用了类似这个问题的方法.

但是,我想要剪切剪切路径以创建"框架".这是有效的,但弧形笔划看起来与线条笔划明显不同.我已经尝试将笔划宽度调整到更大的值(我认为它最初是像素化),但抗锯齿似乎处理弧和线不同.

这是我在模拟器上看到的内容:

不均匀的笔画图像

这是绘制它的代码:

CGContextSetRGBStrokeColor(context, 0, 0, 0, STROKE_OPACITY);
CGContextSetLineWidth(context, 2.0f);
CGContextAddPath(context, roundRectPath);
CGContextStrokePath(context);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何顺利​​排队?

Pet*_*sey 12

...但是抗锯齿似乎不同地处理弧和线.

不,它没有.

你的中风宽度是一致的 - 它一直是2 pt.

错误的是你已经剪裁成一个矩形,你的形状的两侧正好在这个矩形的边缘上,所以只有矩形内侧的两半被绘制出来.这就是为什么边缘只出现1 px宽.

解决方案要么不剪辑,要在裁剪到每个轴之前将每个轴上的剪裁矩形增长2 pt,要么将形状的边缘向内移动1 pt.(ETA:或者,是的,做一个内心的中风.)