最近在项目中画了一根1像素的线,我是经过直接花一个可是经过PS查看,画了不止1个像素。spa
原代码语句:.net
label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 33, 1)];
label2 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1, 33)];
效果图:blog
在PS中打开发现,原来它绘制了2个像素。开发
后来找到了这张图:get
才明白线宽和像素不是一个概念。it
线宽是指从中心点出发到两边的距离,因此画1个像素的线,咱们只要把线宽设置成半个像素,就行了。class
在绘制线宽为1的直线(3,1)到(3,5)时,其实是占据了左右两个像素各半个像素,而真正绘制时固然是以一个像素为标准单位,因此浅蓝色区域就会以相近的方式进行渲染。这也是宽为1.0的线绘制并不许确的缘由。而当将绘制中心调整到半个像素上就不会有这个问题。渲染
参考文章:im