【IOS开发】如何画1像素的线

最近在项目中画了一根1像素的线,我是通过直接花一个但是通过PS查看,画了不止1个像素。

原代码语句:

label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 33, 1)];
label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1, 33)];

效果图:

在PS中打开发现,原来它绘制了2个像素。

后来找到了这张图:

才明白线宽和像素不是一个概念。

线宽是指从中心点出发到两边的距离,所以画1个像素的线,我们只要把线宽设置成半个像素,就好了。

在绘制线宽为1的直线(3,1)到(3,5)时,实际上是占据了左右两个像素各半个像素,而真正绘制时当然是以一个像素为标准单位,所以浅蓝色区域就会以相近的方式进行渲染。这也是宽为1.0的线绘制并不准确的原因。而当将绘制中心调整到半个像素上就不会有这个问题。


 

参考文章:

iOS 开发:绘制像素到屏幕

IOS CGContextSetLineWidth无法设置1像素线宽?

posted @ 2014-03-20 21:44  ymonke  阅读(4896)  评论(0编辑  收藏  举报