打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi安卓App开发之画布与自绘
userphoto

2022.12.19 天津

关注

FireMonkey下的画布

接触过自绘的同学都知道在VCL下窗体和控件都有一个画布属性叫Canvas,它有画笔、画刷的属性,还有绘制文本、矩形等方法,控件也有OnPaint方法允许开发者自绘。

在Delphi开发安卓App时,如果也遇到需要自绘一些东西,跨平台的FireMonkey控件中也有Canvas,也有OnPaint事件,在事件中也提供Canvas参数可以直接使用。

因此,大部分是差不多的。

但是,

VCL下Canvas的画刷属性是Brush,画笔是Pen,

VCL下的颜色类型是TColor,不支持透明度,内部颜色分量RGB的位顺序是BGR,颜色常量直接使用clRed、clBlack、clWhite等。

FireMonkey下,Canvas画刷属性为Fill,画笔属性为Stroke,

颜色类型则是使用TAlphaColor类型,其中Alpha表示透明度的意思,对的,FireMonkey下的颜色支持透明度,

内部颜色分量RGB的位顺序为ARGB,颜色常量使用TAlphaColorRec.Red、TAlphaColorRec.White等。

我们先来看一下画刷,

放一个Panel,

然后在它的OnPaint事件中写上如下代码:

要注意的是,颜色常量比如白色、黑色、红色等都放在了TAlphaColorRec这个结构体中了,用像TAlphaColorRec.Red这样子去指定,定义在了System.UITypes单元中。

而不像VCL下用clWhite、clBlack、clRed。

FillRect则功能更强,支持圆角功能,支持指定透明度。

看下效果吧:

圆角:

再来看一下画笔:

在Panel的OnPaint事件中写上如下代码:

文本的绘制:

VCL下文本的绘制只需要设置Canvas的Font属性,字体颜色可以通过Font.Color去指定,

而FireMonkey下文本是填度上去的,所以要指定文本的颜色,是指定Canvas.Fill.Color。

在OnPaint外绘制

还有,如果你没有在OnPaint中来绘制,或者使用Bitmap的Canvas来绘制,

那么,需要自己包上BeginSence和EndSence,不然是画不上去的。

比如点击按钮画一条对角线:

大致就这些啦!

最近疫情放开,一些网友都感染了新冠,大家要平时要多注意休息和营养,少加班和熬夜,药物只能让人好受些,靠自身的抵抗力才能战胜新冠,祝大家都无症状吧!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Read write image bitmap pixels in Delphi XE3 | ADUG
Delphi XE2 之 FireMonkey
[示例] Firemonkey ListView 仿 iPhone X 浏海
Delphi如何使用基本的绘图函数绘制统计图 - SamCN - 博客园
实现图象局部放大的原理和方法
Delphi中canvas(画布)的运用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服