From 29546f3a0844a8f103fe6f5eab7edfa572420eed Mon Sep 17 00:00:00 2001 From: ask Date: Mon, 21 Mar 2011 03:58:29 +0000 Subject: [PATCH] TAChart: Improve synchronization in drawer demos git-svn-id: trunk@29950 - --- components/tachart/demo/aggpas/Main.lfm | 1 + components/tachart/demo/aggpas/Main.pas | 8 ++++++++ components/tachart/demo/opengl/Main.lfm | 3 ++- components/tachart/demo/opengl/Main.pas | 14 ++++---------- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/components/tachart/demo/aggpas/Main.lfm b/components/tachart/demo/aggpas/Main.lfm index 78ebdc3824..9941738963 100644 --- a/components/tachart/demo/aggpas/Main.lfm +++ b/components/tachart/demo/aggpas/Main.lfm @@ -36,6 +36,7 @@ object Form1: TForm1 'Standard' ) Title.Visible = True + OnAfterPaint = Chart1AfterPaint Align = alClient Color = clMoneyGreen ParentColor = False diff --git a/components/tachart/demo/aggpas/Main.pas b/components/tachart/demo/aggpas/Main.pas index 3cbeb6cdc0..fc34f4915c 100644 --- a/components/tachart/demo/aggpas/Main.pas +++ b/components/tachart/demo/aggpas/Main.pas @@ -24,6 +24,7 @@ type Panel1: TPanel; RandomChartSource1: TRandomChartSource; procedure cbAggPasClick(Sender: TObject); + procedure Chart1AfterPaint(ASender: TChart); procedure ChartPaint( ASender: TChart; const ARect: TRect; var ADoDefaultDrawing: Boolean); procedure FormCreate(Sender: TObject); @@ -51,6 +52,11 @@ begin Chart1.OnChartPaint := nil; end; +procedure TForm1.Chart1AfterPaint(ASender: TChart); +begin + PaintBox1.Invalidate; +end; + procedure TForm1.ChartPaint(ASender: TChart; const ARect: TRect; var ADoDefaultDrawing: Boolean); begin @@ -78,9 +84,11 @@ procedure TForm1.PaintBox1Paint(Sender: TObject); begin FAggCanvas.Width := PaintBox1.Width; FAggCanvas.Height := PaintBox1.Height; + Chart1.DisableRedrawing; Chart1.Title.Text.Text := 'AggPas'; Chart1.Draw(TAggPasDrawer.Create(FAggCanvas), PaintBox1.Canvas.ClipRect); Chart1.Title.Text.Text := 'Standard'; + Chart1.EnableRedrawing; FBmp.LoadFromIntfImage(FAggCanvas.Image.IntfImg); PaintBox1.Canvas.Draw(0, 0, FBmp); end; diff --git a/components/tachart/demo/opengl/Main.lfm b/components/tachart/demo/opengl/Main.lfm index 8003a737cc..e6663c0be9 100644 --- a/components/tachart/demo/opengl/Main.lfm +++ b/components/tachart/demo/opengl/Main.lfm @@ -6,7 +6,6 @@ object Form1: TForm1 Caption = 'Form1' ClientHeight = 319 ClientWidth = 684 - OnCreate = FormCreate LCLVersion = '0.9.31' object OpenGLControl1: TOpenGLControl Left = 344 @@ -40,7 +39,9 @@ object Form1: TForm1 'Standard' ) Title.Visible = True + OnAfterPaint = Chart1AfterPaint Align = alLeft + Color = clSkyBlue ParentColor = False object Chart1LineSeries1: TLineSeries LinePen.Color = clBlue diff --git a/components/tachart/demo/opengl/Main.pas b/components/tachart/demo/opengl/Main.pas index 72efaff0d4..83eedec5f6 100644 --- a/components/tachart/demo/opengl/Main.pas +++ b/components/tachart/demo/opengl/Main.pas @@ -18,10 +18,8 @@ type Chart1LineSeries1: TLineSeries; OpenGLControl1: TOpenGLControl; RandomChartSource1: TRandomChartSource; - procedure FormCreate(Sender: TObject); + procedure Chart1AfterPaint(ASender: TChart); procedure OpenGLControl1Paint(Sender: TObject); - private - procedure OnAppIdle(Sender: TObject; var Done: Boolean); end; var @@ -31,14 +29,8 @@ implementation {$R *.lfm} -procedure TForm1.FormCreate(Sender: TObject); +procedure TForm1.Chart1AfterPaint(ASender: TChart); begin - Application.AddOnIdleHandler(@OnAppIdle); -end; - -procedure TForm1.OnAppIdle(Sender: TObject; var Done: Boolean); -begin - Done:=false; OpenGLControl1.Invalidate; end; @@ -56,9 +48,11 @@ begin glLoadIdentity(); d := TOpenGLDrawer.Create(OpenGLControl1); + Chart1.DisableRedrawing; Chart1.Title.Text.Text := 'OpenGL'; Chart1.Draw(d, Rect(0, 0, OpenGLControl1.Width, OpenGLControl1.Height)); Chart1.Title.Text.Text := 'Standard'; + Chart1.EnableRedrawing; OpenGLControl1.SwapBuffers; end;