Delphi XE 2のFireMonkey入門(5)-TAlphaColor

2593 ワード

TColorではなく、TAlphaColorです.
TAlphaColor = type Cardinal; まだ整数です.
4バイトはそれぞれ:AARR GG BB(透明度、赤、緑、青);これはTColorの色順とは逆であり、透明度が増加する.
HDフォームにTRectangleとTbuttonを3つ追加し、テストします.
// 
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(0, 0, 255);
  //  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 := 127; // 
  Rectangle1.Fill.Color := C;
  A := TAlphaColorRec(C).A;
  ShowMessageFmt('%x %x %x %x', [A, R, G, B]);
end;

色を調整するコントロールも便利で、色合い、彩度、明るさも簡単に調整できます.
TRectangle、TColorComboBox、TColorPanel、TColorPicker、TComboColorBox、TColorQuadの各1つを追加し、テスト:
//  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;

システムでUIconstsユニットには、StringToAlphaColor()、AlphaColorToIdent()、IdentToAlphaColor()などの相関関数もある.