FireMonkey 用来做 APP 的一个特点就是做界面通吃各平台,因为它自己画图。因为自己画图,所以如果 APP 需要一些效果,也可以程序员自己搞定,通过组合各种形状,无需找第三方控件。

先看一个效图图:

第一个图是界面元素,第二个图中的圆圈发光,是因为鼠标点下去(或者手指头触摸)。

这种效果,我摸索了一下,发现用 FireMonkey 完全可以在设计期用现场控件堆出来。

首先说这个圆圈:

1. 放一个 TLayout 作为圆圈的托盘。

2. 在这个 TLayout 上面,放两个 TCircle 圆圈控件。设置其 Align 为 Client,充满这个 TLayout。注意 Layout 的长宽要一样。

2.1. 设置两个圆圈的属性:Fill 属性里面的子项目 Kind 设置为 none,这样圆圈没有填充颜色。

2.2. 圆圈1的 Stroke 属性的子项目 Color 设置为 #FF3592F6,蓝色;Thickness 设置为 6,粗线条,模糊后,就是图中的发光。

2.3. 圆圈2的 Stroke 属性的子项目 Color 设置为 Azure,浅蓝色;Thickness 设置为默认的 1,细线条。也就是图中圆圈的亮线。

3. 拖一个 TBlurEffect 过来,在 Delphi IDE 左边的 Struct 窗口里面,把这个 TBlurEffect 拖到第一个圆圈下面。效果就算第一个圆圈模糊了。在黑色背景上,就是圆圈发光。

3.1. 这时候你看到模糊的发光在线条圆圈的里面。我想要的效果是线条圆圈内外都发光。办法是,设置圆圈2的 Margin 属性,修改其4个值,在设计期,逐渐增大那4个值(Top, Bottom, Left, Right),这个 Align 为 Client 的圆圈会逐渐缩小,缩小到合适的位置,就有了想要的效果。

4. 拖一个 TGlowEffict 过来,在 Struct 窗口里,把它拖到作为容器托盘的 Layout 下面。如果设置它的 Enabled 为 True 则圆圈就显示为图2的效果。设计期设置为 False。

5. 代码:FireMonkey 的每个元素,比如 TCircle 或者 TLayout 都有一个 HitTest 属性,这个属性设置为 True 则它可以响应触摸或者鼠标。因此,对这个圆圈,随便选择一个,比如选择圆圈 2,在属性面板里,切换到 Events ,找到它的 OnMouseDown 事件,鼠标双击,IDE 帮你创建 OnMouseDown 事件的代码框架,在里面填写:GlowEffict1.Enabled := True;  同理,在 OnMouseUp 事件方法里面填写 GlowEffict1.Enabled := False;

6. 黑色背景:我在这里采用深蓝色背景。拖一个 TRectangle 过来,设置它的 Align 属性为 Contant,这样它会充满屏幕,但不会抢容器位置。鼠标右键点击它,在下拉菜单里面选择 Control -- Send to back 把它放到底层去。

7. 在 WINDOWS 底下运行这个程序,可以看到效果。编译为 Android 让它跑到手机上,效果相同。

然后是三角形,视觉效果相同,因此做法相同。但 FireMonkey 木有三角形控件,怎么办?

FireMonkey 有一个控件叫做 TPath,路径控件。它支持 SVG 这样的矢量图数据。

1. 拖一个 Layout 过来作为容器;

2. 拖2个 TPath 过来,放到上述 Layout 容器里面,设置 Align 为 Client;

3. 三角形的实现:Path 控件在 IDE 的属性面板里面,有个 Data 属性,拉开,底下还有个子项目叫 Data,在里面直接填入:M250,150 L150,350 L350,350 Z  这一串字符,Path 就呈现为三角形了。

4. 其它视觉效果,按照上面圆圈的做法,同样做一遍。

5. 上述三角形是朝上的。想要朝下的,用鼠标点击,选中作为容器托盘的 Layout,按 Ctr-C 复制,再按 Ctr-V 粘贴,界面上就再多一个包含了三角形的 Layout,在属性面板里面设置这个 Layout 的 RotationAngle 为 180,它就旋转 180度,三角形朝下了。

然后,是摆位置。我想要的效果是上下两个三角形,中间是圆圈。三个图都位于屏幕水平方向的中间。不管屏幕大小,相对位置都是这样。摆位的方式是依赖 Align 属性。

1. 拖三个 Layout 作为摆位的容器。其 Align 设置为:A. Top;B. VertCenter;C. Bottom;

2. 顶部和底部的 Layout 不想让它贴屏幕的上下边,方法是设置其 Margin 属性的 Top 和 Bottom 值。

3. 把圆圈和三角形的 Layout 托盘,在 IDE 左边的 Struct 窗口里面,拖到对应的摆位容器 Layout 下面。

4. 设置三个图形的托盘 Layout 的 Align 属性为 Center。

这样设置下来,不管屏幕大小,它都能正确显示相对位置。

这样的一个界面,如果把它放进一个 FireMonkey 的 TFrame,就相当于自己组合出了一个通用的控件,需要的地方,拖这个 Frame 过去摆进 Form 就有了,可以重复使用。

搞定。

FireMonkey 界面的玩法相关推荐

  1. 弃 Windows 而拥抱 Linux 之后,这本书教了新玩法

    微软弃 Windows 而拥抱 Linux 之后,国内首本SQL Server On Linux的图书出版,这本书教了很多新玩法. SQL Server作为微软公司著名的数据库管理系统,多年以来一直稳 ...

  2. ar 微信小程序_微信AR玩法支持实现后,微信小程序会有想象空间吗?

    7月5日,微信小程序正式支持实现AR效果,并向品牌商户.AR引擎服务商开放接入.首个支持AR动态试妆的美妆品牌小程序"阿玛尼美妆官方精品商城"在7月5日同步更新上线. 界面记者体验 ...

  3. 她理财携手神策数据:让数据成为社区运营玩法升级的关键变量

    "把钱用在对自己对别人都有益的事情上,不要错花一分钱.--本杰明.富兰克林 近日,国内领先的女性综合理财服务平台「她理财」与神策数据再次建立深度合作--在签约神策分析的基础上,再签约神策智能 ...

  4. ESP32又有新玩法了,启明云端把它带入到冷门行业--测试治具

    之前我对治具了解不多,这次看了启明把ESP32应用到治具中,确实有些差异,但也觉得没毛病. 治具分很多种,今天我们要介绍的是一款专门针对主控芯片或模组进行功能性和软件版本测试验证的治具.因为这些主控芯 ...

  5. 从数值、玩法、社交模块入手谈MMORPG手游设计

    剑灵手游在韩服首发已有一年半,上个月登录台服,稍稍体验了一下.本文接下来将轻度漫谈一下--韩国与国内MMO手游设计,包含的范围主要为数值->玩法->社交三点. 我们先对三个模块进行简单的定 ...

  6. 不能错过的RTS经典:《蘑菇战争2》是如何做玩法创新的?

    最近有一款经典的RTS游戏在国内测试,这款游戏曾经连续2年被苹果评为年度最佳游戏.就是这款游戏<蘑菇战争>,该游戏是由俄罗斯的 Zillion Whales 研发的,早在2013年这款游戏 ...

  7. html 横屏内容显示不全_“屏”什么喜欢你,车载显示器有哪些新玩法...

    自2014年特斯拉使用大屏之后便开启了汽车大屏时代,各大汽车公司开始无休止的开展着自己的"大屏"计划,为汽车内饰创造更多的科技感和现代感. 似乎现代智能车载显示,大屏成了标配.但随 ...

  8. 怎么用计算机弹出soldout,SOLDOUT2游戏新手攻略玩法全面介绍

    SOLDOUT2是一款很好玩的像素模拟游戏,很多玩家对这个游戏还不是很了解,今天魔盟小编给大家带来的是SOLDOUT2游戏新手攻略玩法全面介绍,感兴趣的朋友们可以参考一下. -感谢 nga_UID:5 ...

  9. 可编程智能小车,100种玩法,从3岁玩到15岁,培养孩子“最强大脑”

    ▲ 数据汪特别推荐 点击上图进入玩酷屋 毫无疑问,数学.科学和计算机科学是解决21世纪现代问题的三大支柱.当现在各式各样的兴趣班和教育辅导班快要呈现饱和状态时,一种新兴的教育活动正如火如荼地进行着那就 ...

  10. 可编程的智能小车,100种玩法,让孩子玩出理科编程思维

    ▲ 数据汪特别推荐 点击上图进入玩酷屋 毫无疑问,数学.科学和计算机科学是解决21世纪现代问题的三大支柱.当现在各式各样的兴趣班和教育辅导班快要呈现饱和状态时,一种新兴的教育活动正如火如荼地进行着那就 ...

最新文章

  1. CentOS重启启动Apache,VNC
  2. 无法识别的属性“targetFramework”的解决方法
  3. 【noiOJ】P1996
  4. python第三十二课——队列
  5. VTK:图片之StaticImage
  6. 2017.12.26
  7. Java dectobin(n)函数_浙大JAVA实验题答案09answer.docx
  8. 互利网上数字金融典型场景: 网络借贷
  9. 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片
  10. WIN10+Ubuntu16.4 双系统,遇到的坑
  11. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
  12. 文本文件编码探测几个链接
  13. 发送ajax的get请求,AJAX之发送GET请求
  14. 免费的3D GIS 软件,特点与应用领域介绍
  15. Android开发中的图片压缩
  16. UE4-4.26蓝图功能实现:按键控制物体旋转的“延伸”(点名系统Get all actors of class)
  17. 技术问答-5 String StringBuilder StringBuffer
  18. 2015年工作总结——①名IT女的日常
  19. 假期培训日记(数论)
  20. sscanf小技巧-洛谷P7911 网络连接

热门文章

  1. 2020年的工程咨询将如何影响建设工程?
  2. PHP 执行系统命令函数
  3. 软件工程需求分析模板(简单)
  4. ZZULIOJ1026
  5. C#操作Access数据库(查询,更新,插入)
  6. 打开Excle出现配置进度解决方法
  7. 红外遥控(NEC协议)编程
  8. 多目标追踪综述阅读(2021)
  9. 超高频RFID智慧酒店管理系统解决方案
  10. CentOS Docker环境部署NextCloud