Delphi XE2 之 FireMonkey 入门(5) - TAlphaColor
不是 TColor, 是 TAlphaColor 了.
TAlphaColor = type Cardinal; 还是一个整数.
四个字节分别是: AA RR GG BB(透明度、红、绿、蓝); 这和 TColor 的颜色序相反, 并增加了透明度.
在 HD 窗体上添加一个 TRectangle 和三个 TButton, 测试:
//下面四种赋值方法相同
procedure TForm1.Button1Click(Sender: TObject);
begin
Rectangle1.Fill.Color := $FFFF0000;
Rectangle1.Fill.Color := claRed;
Rectangle1.Fill.Color := TAlphaColors.Red;
Rectangle1.Fill.Color := TAlphaColorRec.Red;
end; //通过函数构建 TAlphaColor
procedure TForm1.Button2Click(Sender: TObject);
begin
Rectangle1.Fill.Color := MakeColor(, , );
//另有 AppendColor()、SubtractColor() 等颜色加减或转换函数
end; //通过 TAlphaColorRec 结构调整颜色获取或设置颜色分量
procedure TForm1.Button3Click(Sender: TObject);
var
C: TAlphaColor;
A,R,G,B: Byte;
begin
C := MakeColor($82, $00, $4B, $FF);
Rectangle1.Fill.Color := C; A := TAlphaColorRec(C).A;
R := TAlphaColorRec(C).R;
G := TAlphaColorRec(C).G;
B := TAlphaColorRec(C).B;
ShowMessageFmt('%x %x %x %x', [A, R, G, B]); TAlphaColorRec(C).A := ; //调下透明度
Rectangle1.Fill.Color := C;
A := TAlphaColorRec(C).A;
ShowMessageFmt('%x %x %x %x', [A, R, G, B]);
end;
调整颜色的控件也很方便, 现在也能方便地调整: 色调、饱和度、亮度.
添加 TRectangle、TColorComboBox、TColorPanel、TColorPicker、TComboColorBox、TColorQuad 各一个, 测试:
//在 TColorComboBox 的 OnChange 中修改颜色
procedure TForm1.ColorComboBox1Change(Sender: TObject);
begin
Rectangle1.Fill.Color := ColorComboBox1.Color;
end; //在 TColorPanel 的 OnChange 中修改颜色
procedure TForm1.ColorPanel1Change(Sender: TObject);
begin
Rectangle1.Fill.Color := ColorPanel1.Color;
end; //在 TColorPicker 的 OnChange 中修改颜色
procedure TForm1.ColorPicker1Click(Sender: TObject);
begin
Rectangle1.Fill.Color := ColorPicker1.Color;
end; //在 TComboColorBox 的 OnChange 中修改颜色
procedure TForm1.ComboColorBox1Change(Sender: TObject);
begin
Rectangle1.Fill.Color := ComboColorBox1.Color;
end; //通过 TColorQuad 调整 HSL(色调、饱和度、亮度)
procedure TForm1.ColorQuad1Change(Sender: TObject);
var
C: TAlphaColor;
begin
C := Rectangle1.Fill.Color;
Rectangle1.Fill.Color := ChangeHSL(C, ColorQuad1.Hue, ColorQuad1.Sat, ColorQuad1.Lum);
Caption := Format('%f, %f, %f', [ColorQuad1.Hue, ColorQuad1.Sat, ColorQuad1.Lum]);
end;
在 System.UIConsts 单元也有 StringToAlphaColor()、AlphaColorToIdent()、IdentToAlphaColor() 等相关函数.
Delphi XE2 之 FireMonkey 入门(5) - TAlphaColor的更多相关文章
- Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题
Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...
- Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...
- Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid
Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...
- Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit
Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...
- Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo
Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSma ...
- Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox
Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...
- Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu
Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...
- Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public constructor Create(...); ov ...
随机推荐
- 2019全国大学生数学建模竞赛(高教社杯)A题题解
文件下载:https://www.lanzous.com/i6x5iif 问题一 整体过程: 0x01. 首先,需要确定燃油进入和喷出的间歇性工作过程的时间关系.考虑使用决策变量对一段时间内燃油进入和 ...
- 梯度下降算法(Gradient descent)GD
1.我们之前已经定义了代价函数J,可以将代价函数J最小化的方法,梯度下降是最常用的算法,它不仅仅用在线性回归上,还被应用在机器学习的众多领域中,在后续的课程中,我们将使用梯度下降算法最小化其他函数,而 ...
- Hive常用数据库操作
1.创建表的三种姿势 第一种 //员工表 create table if not exists default.emp( empno int, ename string, job string, mg ...
- 流畅的Python (Fluent Python) —— 第一部分
Python 最好的品质之一是一致性. 魔术方法(magic method)是特殊方法的昵称.特殊方法也叫双下方法. 1.1 一摞Python风格的纸牌 import collections Card ...
- fpga ip
原文地址:altera FIR ip核 license破解作者:王永刚Aether 在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent un ...
- 微信小程序(19)-- 从底部向上滑出的动画效果
从底部向上滑出的动画效果: 用到了小程序的触摸事件bindtouchmove,以及创建一个annimation对象,完成动画操作之后使用animation这个对象的export()方法导出动画数据. ...
- Linux-day-1
1. ls 作用:列出文件信息,默认为当前目录下 常用选项: -a: 列出所有的文件,包括所有以.开头的隐藏文件 -d: 列出目录本身,并不包含目录中的文件 ...
- evpp::buffer使用
evpp::Buffer testmsg; const char* buf123 = "12342333333333333333333333333323424324234234"; ...
- 小程序makePhoneCall拨打电话问题
调用wx.makePhoneCall后肯定会弹出一个询问框,此时无论是点击确认或者取消,页面都会依次触发app.js中的onHide函数和onShow函数,所以需要注意
- Eclipse开发工具的编码问题
乱码:文件有一个编码,打开文件的工具(Eclipse或者浏览器)有一个编码,当两个编码不同就会出现编码异常或乱码. 参考: Eclipse修改编码格式 背景:在Eclipse的开发使用中,我们经常使用 ...