2

我正在制作一个带有核心动画层的“行进蚂蚁”选择框架,就像这篇文章一样:MARCHING ANTS WITH CORE ANIMATION。但我唯一不喜欢的是 CAShapeLayer 中的线宽。我需要宽度正好为 1px,但由于抗锯齿,线宽约为 2 像素并且有点透明。

有没有办法关闭抗锯齿?

4

2 回答 2

5

我遇到了同样的问题,幸运的是,我四处闲逛了一下,发现了 CGContextSetShouldAntialias(GCContextRef, BOOL) 函数。事实证明,抗锯齿发生在图形上下文中。

我使用 CALayer 渲染到位图上下文中的一系列形状层对此进行了测试。默认情况下,我得到了我在 100-130 范围内设置的值(位图值),以及一堆较低的数字。设置 CGContextSetShouldAlias(context, NO) 后,我得到了我的值。

于 2012-07-09T13:35:26.383 回答
3

根据文档,您似乎陷入了抗锯齿:

CAShapeLayer 类在其坐标空间中绘制三次贝塞尔样条曲线。形状在图层的内容和它的第一个子图层之间合成。

该形状将被绘制为抗锯齿,并尽可能在光栅化之前将其映射到屏幕空间以保持分辨率独立性。但是,应用于图层或其祖先的某些类型的图像处理操作(例如 CoreImage 过滤器)可能会强制在局部坐标空间中进行光栅化。

于 2012-04-25T03:20:05.907 回答