最近使用canvas在android上做绘图开发,发现如果Paint的setStrokeWidth设置为1,且canvas没有设置抗锯齿效果,则drawline函数将无法绘制出水平的线段,这是为什么呢?原来,如果你将StrokeWidth设为0,android将为你绘制hairline(一般为1pix),而如果你设置为1,那么android将根据比例为你计算1单位宽度所占的像素值,比如你现在的比例是0.75,则android就无法绘制出宽度为0.75像素的线段(特别是在模拟器上,可能更容易出现这种情况,因为电脑像素与手机像素大小不一样)。
那么怎么解决这个问题呢?其实很简单---虽然我是经过了一上午的时间才琢磨出来的,以为我的问题是在画multiline的时候,一条线段的部分被打断了!!!。那就是为Paint设置抗锯齿效果,方法为:Paint pen = new Paint(Paint.ANTI_ALIAS_FLAG );
去试试效果吧!
忍不住要小抱怨一句:咋这么不智能呢?竟然还允许有画不出水平线的情况发生~~~~~