home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / TeeChartPro / TeeChart5Delphi5Eval.exe / %MAINDIR% / Examples / Features / Canvas_GrayScale.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-09-10  |  1.8 KB  |  81 lines

  1. unit Canvas_GrayScale;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, Base, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
  8.  
  9. type
  10.   TGrayScaleForm = class(TBaseForm)
  11.     Series1: TPieSeries;
  12.     CheckBox1: TCheckBox;
  13.     CheckBox2: TCheckBox;
  14.     procedure CheckBox1Click(Sender: TObject);
  15.     procedure Chart1AfterDraw(Sender: TObject);
  16.     procedure FormCreate(Sender: TObject);
  17.   private
  18.     { Private declarations }
  19.   public
  20.     { Public declarations }
  21.   end;
  22.  
  23. implementation
  24.  
  25. {$R *.DFM}
  26.  
  27. Uses TeCanvas;
  28.  
  29. { This procedure will convert all pixels in ABitmap to
  30.   levels of gray }
  31. Procedure TeeGrayScale(ABitmap:TBitmap; Inverted:Boolean);
  32. type
  33.   PRGBTripleArray=^TRGBTripleArray;
  34.   TRGBTripleArray=array[Word] of TRGBTriple;
  35.  
  36. Var RGB : PRGBTripleArray;
  37.     x   : Integer;
  38.     y   : Integer;
  39.     tmp : Integer;
  40. begin
  41.   With ABitmap do
  42.   begin
  43.     PixelFormat:=pf24Bit;
  44.     for y:=Height-1 downto 0 do
  45.     begin
  46.       RGB:=ScanLine[y];
  47.       for x:=0 to Width-1 do
  48.       With RGB[x] do
  49.       begin
  50.         tmp:=(rgbtBlue+rgbtGreen+rgbtRed) div 3;
  51.         if Inverted then tmp:=255-tmp;
  52.         rgbtBlue:=tmp;
  53.         rgbtGreen:=tmp;
  54.         rgbtRed:=tmp;
  55.       end;
  56.     end;
  57.   end;
  58. end;
  59.  
  60. procedure TGrayScaleForm.CheckBox1Click(Sender: TObject);
  61. begin
  62.   CheckBox2.Enabled:=CheckBox1.Checked;
  63.   Chart1.Repaint;
  64. end;
  65.  
  66. procedure TGrayScaleForm.Chart1AfterDraw(Sender: TObject);
  67. begin
  68.   if CheckBox1.Checked then
  69.      TeeGrayScale((Chart1.Canvas as TTeeCanvas3D).Bitmap, CheckBox2.Checked);
  70. end;
  71.  
  72. procedure TGrayScaleForm.FormCreate(Sender: TObject);
  73. begin
  74.   inherited;
  75.   Series1.FillSampleValues(8);
  76. end;
  77.  
  78. initialization
  79.   RegisterClass(TGrayScaleForm);
  80. end.
  81.