不是 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的更多相关文章

  1. Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题

    Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题 很喜欢 FMX 的一些新控件, 如: TExpander.TArcDial.TComboTrackBar.T ...

  2. Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem

    Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...

  3. Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid

    Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...

  4. Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit

    Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...

  5. Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox

    Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...

  6. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  7. Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox

    Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...

  8. Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu

    Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...

  9. Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览

    Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public   constructor Create(...); ov ...

随机推荐

  1. [Nest] 01.初见nest.js

    github nest 介绍 Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架.它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人 ...

  2. onehot编码解释

    什么是One-Hot编码? One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效. One-Hot编码是分类变 ...

  3. spring security OAuth2.0之客户端Client的实现

    项目代码:https://github.com/hankuikuide/microservice-spring-security-oauth2 网上多数的项目客户端都是采用纯js写,或用postman ...

  4. oracle PL/SQL编程基础知识

    在oracle中使用pl/sql来扩展SQL的功能,使得SQL能够更加的灵活,功能更加强大,效率更高.pl/sql让sql也能执行判断,循环等操作.主要记录一下pl/sql的基本语法和基本条件判断语句 ...

  5. 广播即时通信src和des

    package 第十二章; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddres ...

  6. 牛客练习赛49 B 筱玛爱阅读 (状压DP,子集生成)

    链接:https://ac.nowcoder.com/acm/contest/946/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262875K,其他语言5257 ...

  7. qt02 textEdit

    1.向QTextEdit中当前光标位置添加一行字符串message ui.messageTextEdit->textCursor().insertText(message+"\n&qu ...

  8. MongoDB的安装以及启动

    1.首先什么是MongoDB? MongoDB是一个基于分布式文件存储的数据库,是由c++语言编写的.为web应用提供可扩展的高性能数据的存储方案.是一个介于关系型数据库和非关系型数据库 的中间产品, ...

  9. 【LuoguP3241】[HNOI2015] 开店

    题目链接 题意 给出一棵边带权的树,多次在线询问一个点到一个区间内的点的距离和. Sol 分块过不了的 一个 trick ,都知道要算两点之间距离可以拆成到根的距离和他们的 LCA 到根的距离 ,其实 ...

  10. delphi 10.3 控件遮挡 webbrowser

    听闻10.3的新特性之一,webbrowser可以被其他控件遮挡, 在等待10.3.1出来后才开始来尝鲜, 但在webbrowser上添加控件后, 发现控件还是被挡住了, 研究发现需要将控件的cont ...