home *** CD-ROM | disk | FTP | other *** search
- unit Canvas_GrayScale;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, Base, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
-
- type
- TGrayScaleForm = class(TBaseForm)
- Series1: TPieSeries;
- CheckBox1: TCheckBox;
- CheckBox2: TCheckBox;
- procedure CheckBox1Click(Sender: TObject);
- procedure Chart1AfterDraw(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- implementation
-
- {$R *.DFM}
-
- Uses TeCanvas;
-
- { This procedure will convert all pixels in ABitmap to
- levels of gray }
- Procedure TeeGrayScale(ABitmap:TBitmap; Inverted:Boolean);
- type
- PRGBTripleArray=^TRGBTripleArray;
- TRGBTripleArray=array[Word] of TRGBTriple;
-
- Var RGB : PRGBTripleArray;
- x : Integer;
- y : Integer;
- tmp : Integer;
- begin
- With ABitmap do
- begin
- PixelFormat:=pf24Bit;
- for y:=Height-1 downto 0 do
- begin
- RGB:=ScanLine[y];
- for x:=0 to Width-1 do
- With RGB[x] do
- begin
- tmp:=(rgbtBlue+rgbtGreen+rgbtRed) div 3;
- if Inverted then tmp:=255-tmp;
- rgbtBlue:=tmp;
- rgbtGreen:=tmp;
- rgbtRed:=tmp;
- end;
- end;
- end;
- end;
-
- procedure TGrayScaleForm.CheckBox1Click(Sender: TObject);
- begin
- CheckBox2.Enabled:=CheckBox1.Checked;
- Chart1.Repaint;
- end;
-
- procedure TGrayScaleForm.Chart1AfterDraw(Sender: TObject);
- begin
- if CheckBox1.Checked then
- TeeGrayScale((Chart1.Canvas as TTeeCanvas3D).Bitmap, CheckBox2.Checked);
- end;
-
- procedure TGrayScaleForm.FormCreate(Sender: TObject);
- begin
- inherited;
- Series1.FillSampleValues(8);
- end;
-
- initialization
- RegisterClass(TGrayScaleForm);
- end.
-