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

  1. unit Canvas_RotCenter;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Base, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls, ComCtrls, TeeSurfa,
  8.   ActnList, TeeChartActions, TeeTools;
  9.  
  10. type
  11.   TRotationCenter = class(TBaseForm)
  12.     Series1: TSurfaceSeries;
  13.     Label1: TLabel;
  14.     Label2: TLabel;
  15.     TrackBar1: TTrackBar;
  16.     Label3: TLabel;
  17.     TrackBar2: TTrackBar;
  18.     Label4: TLabel;
  19.     TrackBar3: TTrackBar;
  20.     CheckBox1: TCheckBox;
  21.     Timer1: TTimer;
  22.     CheckBox2: TCheckBox;
  23.     CheckBox3: TCheckBox;
  24.     ActionList1: TActionList;
  25.     SeriesActionActive1: TSeriesActionActive;
  26.     ChartTool1: TRotateTool;
  27.     procedure TrackBar1Change(Sender: TObject);
  28.     procedure Timer1Timer(Sender: TObject);
  29.     procedure FormCreate(Sender: TObject);
  30.     procedure CheckBox1Click(Sender: TObject);
  31.     procedure TrackBar2Change(Sender: TObject);
  32.     procedure TrackBar3Change(Sender: TObject);
  33.     procedure Chart1AfterDraw(Sender: TObject);
  34.   private
  35.     { Private declarations }
  36.     Delta:Integer;
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. implementation
  42.  
  43. {$R *.DFM}
  44. Uses TeCanvas;
  45.  
  46. procedure TRotationCenter.TrackBar1Change(Sender: TObject);
  47. begin
  48.   Chart1.Canvas.RotationCenter.X:=TrackBar1.Position;
  49. end;
  50.  
  51. procedure TRotationCenter.Timer1Timer(Sender: TObject);
  52. begin
  53.   inherited;
  54.   With Chart1.View3DOptions do
  55.   begin
  56.     Rotation:=Rotation+Delta;
  57.     if Rotation=360 then Delta:=-1 else
  58.     if Rotation=270 then Delta:=1;
  59.   end;
  60. end;
  61.  
  62. procedure TRotationCenter.FormCreate(Sender: TObject);
  63. begin
  64.   inherited;
  65.   Series1.FillSampleValues(20);
  66.   Delta:=1;
  67. end;
  68.  
  69. procedure TRotationCenter.CheckBox1Click(Sender: TObject);
  70. begin
  71.   inherited;
  72.   Timer1.Enabled:=CheckBox1.Checked
  73. end;
  74.  
  75. procedure TRotationCenter.TrackBar2Change(Sender: TObject);
  76. begin
  77.   Chart1.Canvas.RotationCenter.Y:=TrackBar2.Position;
  78. end;
  79.  
  80. procedure TRotationCenter.TrackBar3Change(Sender: TObject);
  81. begin
  82.   Chart1.Canvas.RotationCenter.Z:=TrackBar3.Position;
  83. end;
  84.  
  85. procedure TRotationCenter.Chart1AfterDraw(Sender: TObject);
  86. var tmpX : Integer;
  87.     tmpY : Integer;
  88.     tmpZ : Integer;
  89. begin
  90.   inherited;
  91.   if CheckBox2.Checked then { draw 3D axes }
  92.   With Chart1,Canvas do
  93.   begin
  94.     { set pen style }
  95.     Pen.Color:=clBlue;
  96.     Pen.Width:=1;
  97.     Pen.Style:=psDot;
  98.     { center position }
  99.     tmpY:=ChartYCenter+Round(RotationCenter.Y);
  100.     tmpX:=ChartXCenter+Round(RotationCenter.X);
  101.     tmpZ:=(Width3D div 2)+Round(RotationCenter.Z);
  102.     { draw axes }
  103.     HorizLine3D( ChartRect.Left,ChartRect.Right,tmpY,tmpZ);
  104.     VertLine3D( tmpX, ChartRect.Top, ChartRect.Bottom, tmpZ);
  105.     ZLine3D( tmpX, tmpY, 0, Width3D);
  106.   end;
  107. end;
  108.  
  109. initialization
  110.   RegisterClass(TRotationCenter);
  111. end.
  112.