ios - CoreGraphics画线时模糊的问题
巴扎黑
巴扎黑 2017-04-17 11:38:14
[iOS讨论组]

我看CoreGraphics的教程时,里面提到1像素绘图模糊的问题,需要偏移0.5点才行。这是为什么呢?stroke path不是stroke在边界上吗?

It turns out that when Core Graphics strokes a path, it draws the stroke on the middle of the exact edge of the path.

这句话要怎么理解呢?

巴扎黑
巴扎黑

全部回复(1)
迷茫

在Xcode搜索CGContextSetLineWidth的文档,上面有提到:

The default line width is 1 unit. When stroked, the line straddles the path, with half of the total width on either side.

就是说如果设置宽度为1个像素的线,那么绘制线条分别在所绘路径的两边,每边各一半宽度,即0.5像素。而正在在屏幕上绘制时,是以像素为单位绘制的,并且对于显示内容不满一个像素时,为了平滑显示内容默认使用了抗锯齿效果。如下面中间图形所示,对于1个像素宽度蓝色的线条,左右个0.5像素,剩下0.5像素使用抗锯齿,用淡蓝色绘制。

要解决这个问题,你可以让你的path偏移0.5像素,或者关闭抗锯齿: CGContextSetAllowsAntialiasing(contextRef,NO);

参考答案来源:

  • Quartz 2D - 绘线

  • Core Graphics 101: 线,矩形和渐变效果

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号