How to adjust RGB values using TTrackBar (Views: 30)
Problem/Question/Abstract: I would like to program an application in which you can control values of red, green and blue with trackbar. How can I do that? Answer: Solve 1: Drop three TrackBars on a form. Set Min to 0, Max to 255. Drop a TImage on the form. Then try this code: { ... } var Form1: TForm1; MyColor: LongWord; RedColor: LongWord = $00000000; GreenColor: LongWord = $00000000; BlueColor: LongWord = $00000000; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin DoImageFill; end; procedure TForm1.DoImageFill; begin MyColor := RedColor or GreenColor or BlueColor; Image1.Canvas.Brush.Color := TColor(MyColor); Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height)); end; procedure TForm1.RedBarChange(Sender: TObject); begin RedColor := RedBar.Position; DoImageFill; end; procedure TForm1.GreenBarChange(Sender: TObject); begin GreenColor := GreenBar.Position shl 8; DoImageFill; end; procedure TForm1.BlueBarChange(Sender: TObject); begin BlueColor := BlueBar.Position shl 16; DoImageFill; end; end. Solve 2: Each color value ranges from 0 to 255. Set the three trackbars with this range. You can use the RGB function to create a color from these values. { ... } type TForm1 = class(TForm) redTrackBar: TTrackBar; greenTrackBar: TTrackBar; blueTrackBar: TTrackBar; Panel1: TPanel; procedure blueTrackBarChange(Sender: TObject); procedure greenTrackBarChange(Sender: TObject); procedure redTrackBarChange(Sender: TObject); public { Public declarations } procedure ChangeColor; end; procedure TForm1.ChangeColor; begin Panel1.Color := RGB(redTrackBar.Position, greenTrackBar.Position, blueTrackBar.Position); end; procedure TForm1.blueTrackBarChange(Sender: TObject); begin ChangeColor; end; procedure TForm1.greenTrackBarChange(Sender: TObject); begin ChangeColor; end; procedure TForm1.redTrackBarChange(Sender: TObject); begin ChangeColor; end; |