[FMX]在 FMX 程序中绘制单像素宽度的直线
在前面的一篇文章中,我介绍了一种绘制低品质直线的方法,但是这么做,效率上肯定要打折扣的。在和群里的朋友们一顿交流折腾后,对于绘制水平或垂直的直线,现在有两种更简单的办法来解决这一问题:
- 办法一:使用 FillRect 来代替 DrawLine 绘制,矩形区域的大小注意要在相应的方向上加 0.5 个像素。
1234Canvas.BeginScene();Canvas.Fill.Color:=TAlphaColors.Black;anvas.FillRect(RectF(10,10,100,10.5),0,0,[],1);Canvas.EndScene; - 办法二:使用 TPointF 的 SnapToPixel 方法,先转换坐标再将相应的坐标传入 DrawLine 做为参数来绘图。
12345Canvas.BeginScene();Canvas.Stroke.Color:=TAlphaColors.Black;Canvas.DrawLine(PointF(10,10).SnapToPixel(Canvas.Scale),PointF(10,100).SnapToPixel(Canvas.Scale),1 );Canvas.EndScene;
两者的效果看起来都不错,至于那个效率更高,我没有做测试,但至少应该比我前面文章介绍的方法好的多,个人推荐第二种吧。