[FMX]在 FMX 程序中绘制单像素宽度的直线

2017-10-09 • AndroidDelphi教程 • 暂无评论 • swish •浏览 353 次

在前面的一篇文章中,我介绍了一种绘制低品质直线的方法,但是这么做,效率上肯定要打折扣的。在和群里的朋友们一顿交流折腾后,对于绘制水平或垂直的直线,现在有两种更简单的办法来解决这一问题:

  • 办法一:使用 FillRect 来代替 DrawLine 绘制,矩形区域的大小注意要在相应的方向上加 0.5 个像素。

     
    1
    2
    3
    4
    Canvas.BeginScene();
    Canvas.Fill.Color:=TAlphaColors.Black;
    anvas.FillRect(RectF(10,10,100,10.5),0,0,[],1);
    Canvas.EndScene;
  • 办法二:使用 TPointF  的 SnapToPixel 方法,先转换坐标再将相应的坐标传入 DrawLine 做为参数来绘图。
     
    1
    2
    3
    4
    5
    Canvas.BeginScene();
    Canvas.Stroke.Color:=TAlphaColors.Black;
    Canvas.DrawLine(PointF(10,10).SnapToPixel(Canvas.Scale),
      PointF(10,100).SnapToPixel(Canvas.Scale),1 );
    Canvas.EndScene;

两者的效果看起来都不错,至于那个效率更高,我没有做测试,但至少应该比我前面文章介绍的方法好的多,个人推荐第二种吧。

最新文章

  1. 报表软件JS开发引用HTML DOM的windows对象
  2. Opencv出现错误“0xc000007b”的解决办法
  3. ArrayList的线程安全测试
  4. Redis常用的30个命令
  5. 总体最小二乘(TLS)
  6. Android的开发环境的发展演变
  7. maven打包源代码sources.jar和javadoc.jar帮助文档
  8. ActionBar官方教程(6)把图标变成一个返回到上级的按钮,同一个app间,不同app间,不同fragment间
  9. JAVA的IO运用
  10. ZipHelper 压缩和解压帮助类
  11. 11.4.2 排序或合并文件(sort命令) - 51CTO.COM
  12. 浅谈h5移动端页面的适配问题
  13. nodejs 实践:express 最佳实践 (一)
  14. ACM KMP 格式输入导致TLE
  15. Azure CosmosDB (11) MongoDB概念
  16. Vert.x简介
  17. SQLMAP自动注入(四):枚举
  18. MP实战系列(十二)之封装方法详解(续二)
  19. Mavlink - 无人机通讯协议
  20. jvm工具及命令大全

热门文章

  1. python json5
  2. 配置MySQL 5.6的主从复制
  3. python,使用PIL库对图片进行操作
  4. 兼容谷歌、火狐、IE7.0以上浏览器div+css实现的带有蒙版的半透明弹窗效果[xyytit]
  5. 转)MySQL日期与时间函数
  6. QT隐式数据共享
  7. 【校招面试 之 C/C++】第9题 C++多态
  8. [leetcode]314. Binary Tree Vertical Order Traversal二叉树垂直遍历
  9. 如何定义一个高逼格的原生JS插件
  10. 使用第三方容器服务,自动化部署.Net Core