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

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,不然是画不上去的。

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

大致就这些啦!

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