http://wiki.lazarus.freepascal.org/BGRABitmap_tutorial_TAChart
原文的代码已经与最新的pkg不相匹配,更改后如下:
uses TABGRAUtils, TADrawUtils, TADrawerCanvas, BGRABitmap, TADrawerBGRA;
....
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
bmp: TBGRABitmap;
id: IChartDrawer;
rp: TChartRenderingParams;
begin
bmp := TBGRABitmap.Create(PaintBox1.Width, PaintBox1.Height);
Chart1.DisableRedrawing;
try
id := TBGRABitmapDrawer.Create(bmp);
id.DoGetFontOrientation := @CanvasGetFontOrientationFunc;
rp := Chart1.RenderingParams;
Chart1.Draw(id, Rect(0, 0, PaintBox1.Width, PaintBox1.Height));
Chart1.RenderingParams := rp;
bmp.Draw(PaintBox1.Canvas, 0, 0);
finally
Chart1.EnableRedrawing;
bmp.Free;
end;
end;
为防止图像闪烁,可以使用BGRAControls中的TBGRAVirtualScreen控件。