程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> GdiPlus[4]: TGPColor

GdiPlus[4]: TGPColor

編輯:Delphi

TGPColor 是 GdiPlus 的顏色主體, 它雖然是個結構體, 但和類一樣, 方法、屬性一應俱全.

  之所以沒有把它定義為類或接口, 我覺得主要是它需要和一個整數值進行隱式轉換, 這要用到運算符重載(暫時只有結構有).

  TGPColor 的多種構建方法:

var 
 c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11: TGPColor; 
begin 
 c1 := TGPColor.Create(0 , 0 , 255 );     { 不透明藍色 } 
 c2 := TGPColor.Create(255, 0, 0, 255);   { 不透明藍色 } 
 c3 := TGPColor.Create(128, 0, 0, 255);   { 半透明藍色 } 
 c4 := TGPColor.Create($800000FF);     { 半透明藍色 } 
 c5 := TGPColor.MakeARGB(128, 0, 0, 255);  { 半透明藍色 } 
 c6 := TGPColor.CreateFromColorRef(clBlue); { 半透明藍色, 參數是 Delphi 傳統格式的顏色值 } 
 
 c7.Initialize(0, 0, 255);         { 不透明藍色 } 
 c8.Initialize(128, 0, 0, 255);       { 半透明藍色 } 
 c9.Initialize($800000FF);         { 半透明藍色 } 
 c10.InitializeFromColorRef(clBlue);    { 不透明藍色, 參數是 Delphi 傳統格式的顏色值 } 
 
 c11 := TGPColor.Blue;           { 不透明藍色, 這是 TGPColor 中 141 個顏色常量之一 } 
end; 
 
//因為 TGPColor 使用運算符重載: TGPColor 可與 ARGB(Cardinal) 隱式轉換, 所以: 
var 
 Color: TGPColor; 
begin 
 Color := $FF00FF00; 
 ShowMessageFmt('$%x', [Color.Value]); //$FF00FF00 
end; 
 
//反之亦然: 
var 
 Num: ARGB; 
begin 
 Num := TGPColor.Lime; 
 ShowMessageFmt('$%x', [Num]);     //$FF00FF00 
end; 

  TGPColor 的屬性:

var 
 C: TGPColor; 
begin 
 C := TGPColor.Create($11, $22, $33, $44); 
 
 { TGPColor.Value 是顏色值 } 
 ShowMessageFmt('$%x', [C.Value]);  //$11223344 
 
 { TGPColor.ColorRef 是 Delphi 傳統格式的顏色值 } 
 ShowMessageFmt('$%x', [C.ColorRef]); //$443322 
 
 { Alpha、Red、Green、Blue 各分量 } 
 ShowMessageFmt('$%.2x, $%.2x, $%.2x, $%.2x', [C.A, C.R, C.G, C.B]); //$11, $22, $33, $44 
 
 { TGPColor.Alpha 與 TGPColor.A 是一回事 } 
 ShowMessageFmt('$%.2x, $%.2x', [C.Alpha, C.A]); //$11, $11 
end; 

  透明色演示代碼:

uses GdiPlus, GdiPlusHelpers; 
 
procedure TForm1.FormPaint(Sender: TObject); 
var 
 Image: IGPImage; 
 Brush: IGPSolidBrush; 
 Rect: TGPRect; 
begin 
 ChDir('C:\GdiPlusImg\'); 
 Image := TGPImage.Create('Grapes.jpg'); 
 Canvas.ToGPGraphics.DrawImage(Image, 20, 10); 
 
 Rect.Initialize(0, 20, Image.Width + 40, 35); 
 Brush := TGPSolidBrush.Create(TGPColor.Create(255, 0, 128, 255)); 
 Canvas.ToGPGraphics.FillRectangle(Brush, Rect); 
 
 Rect.Y := Rect.Y + Rect.Height + 20; 
 Brush := TGPSolidBrush.Create(TGPColor.Create(127, 0, 128, 255)); 
 Canvas.ToGPGraphics.FillRectangle(Brush, Rect); 
 
 Rect.Y := Rect.Y + Rect.Height + 20; 
 Brush := TGPSolidBrush.Create(TGPColor.Create(63, 0, 128, 255)); 
 Canvas.ToGPGraphics.FillRectangle(Brush, Rect); 
end; 

  效果圖:

GdiPlus[4]: TGPColor


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved