本例效果图:
代码文件:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; TrackBar4: TTrackBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure TrackBar4Change(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; var img: TGPImage; var ColorMatrix: TColorMatrix = ( (1.0, 0.0, 0.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 0.0, 1.0, 0.0), (0.0, 0.0, 0.0, 0.0, 1.0)); procedure TForm1.FormCreate(Sender: TObject); begin img := TGPImage.Create('c:\temp\test.png'); {这是专门加工的颜色测试图片} TrackBar1.Height := 23; TrackBar1.ShowSelRange := False; TrackBar1.Max := 100; TrackBar1.Position := TrackBar1.Max; TrackBar2.Height := 23; TrackBar2.ShowSelRange := False; TrackBar2.Max := 100; TrackBar2.Position := TrackBar2.Max; TrackBar3.Height := 23; TrackBar3.ShowSelRange := False; TrackBar3.Max := 100; TrackBar3.Position := TrackBar3.Max; TrackBar4.Height := 23; TrackBar4.ShowSelRange := False; TrackBar4.Max := 100; TrackBar4.Position := TrackBar4.Max; DoubleBuffered := True; end; procedure TForm1.FormDestroy(Sender: TObject); begin img.Free; end; procedure TForm1.FormPaint(Sender: TObject); var g: TGPGraphics; ImageAttributes: TGPImageAttributes; begin g := TGPGraphics.Create(Canvas.Handle); ImageAttributes := TGPImageAttributes.Create; ColorMatrix[0,0] := TrackBar1.Position / 100; {调整红色} ColorMatrix[1,1] := TrackBar2.Position / 100; {调整绿色} ColorMatrix[2,2] := TrackBar3.Position / 100; {调整蓝色} ColorMatrix[3,3] := TrackBar4.Position / 100; {调整透明度} ImageAttributes.SetColorMatrix(ColorMatrix); g.DrawImage(img, {要绘制的图像} MakeRect(10, 10, img.GetWidth, img.GetHeight), {图像将放缩以适合此矩形} 0, 0, {绘图位置} img.GetWidth, img.GetHeight, {大小} UnitPixel, {单位} ImageAttributes {图像属性} ); ImageAttributes.Free; g.Free; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar3Change(Sender: TObject); begin Repaint; end; procedure TForm1.TrackBar4Change(Sender: TObject); begin Repaint; end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 259 ClientWidth = 219 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate OnDestroy = FormDestroy OnPaint = FormPaint PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 23 Top = 160 Width = 24 Height = 13 Caption = #32418#33394 end object Label2: TLabel Left = 23 Top = 184 Width = 24 Height = 13 Caption = #32511#33394 end object Label3: TLabel Left = 23 Top = 206 Width = 24 Height = 13 Caption = #34013#33394 end object Label4: TLabel Left = 11 Top = 230 Width = 36 Height = 13 Caption = #36879#26126#24230 end object TrackBar1: TTrackBar Left = 48 Top = 157 Width = 164 Height = 45 TabOrder = 0 OnChange = TrackBar1Change end object TrackBar2: TTrackBar Left = 48 Top = 179 Width = 164 Height = 45 TabOrder = 1 OnChange = TrackBar2Change end object TrackBar3: TTrackBar Left = 48 Top = 201 Width = 163 Height = 45 TabOrder = 2 OnChange = TrackBar3Change end object TrackBar4: TTrackBar Left = 48 Top = 224 Width = 163 Height = 45 TabOrder = 3 OnChange = TrackBar4Change end end