| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; TrackBar1: TTrackBar; Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TrackBar1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; bmp : TBitmap;
implementation
{$R *.dfm} type TRGB = packed record b, g , r : Byte; end;
TRGBArr = array[0..MAXLONG div 3 - 1] of TRGB; PRGBArr = ^TRGBArr;
procedure TForm1.FormCreate(Sender: TObject); begin bmp := TBitmap.Create; bmp.Assign(Image1.Picture.Graphic); bmp.PixelFormat := pf24bit;
// Image1.Picture.Bitmap.PixelFormat := pf24bit; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin bmp.Free; end;
procedure TForm1.TrackBar1Change(Sender: TObject); var i, j : Integer; l : PRGBArr; c, t : Extended;
begin Image1.Picture.Assign(bmp); c := 1 + (TrackBar1.Position - 50) / 100; with Image1.Picture do begin for i := 0 to bmp.Height - 1 do begin l := Bitmap.ScanLine[i]; for j := 0 to Bitmap.Width - 1 do begin t := (l[j].r * c); if (t > 255) then t := 255 else if (t < 0) then t := 0 else l[j].r := Round(t); end;
end;
end; Image1.Invalidate;
end;
end.
|
|