【发布时间】:2012-09-19 09:32:40
【问题描述】:
是否可以使 TeeChart 的背景透明?我正在使用 v2011.03.32815(与 Delphi XE2 一起开箱即用的版本)。我找到了一个可行的解决方案here,但这不是我需要的。我的DBCharts 在一个框架内,绘制图表的背景可能会发生变化。那么,有什么想法吗?
【问题讨论】:
-
我尝试过时从未成功过。
标签: delphi transparency teechart
是否可以使 TeeChart 的背景透明?我正在使用 v2011.03.32815(与 Delphi XE2 一起开箱即用的版本)。我找到了一个可行的解决方案here,但这不是我需要的。我的DBCharts 在一个框架内,绘制图表的背景可能会发生变化。那么,有什么想法吗?
【问题讨论】:
标签: delphi transparency teechart
这应用于多图表表单/面板可能是这样的:
procedure TFrame3.Chart1BeforeDrawChart(Sender: TObject);
begin
MakeChartTransparent(Chart1, Back1);
end;
procedure TFrame3.Chart2BeforeDrawChart(Sender: TObject);
begin
MakeChartTransparent(Chart2, Back2);
end;
procedure TFrame3.Chart3BeforeDrawChart(Sender: TObject);
begin
MakeChartTransparent(Chart3, Back3);
end;
procedure TFrame3.MakeChartTransparent(Chart: TChart; var Back: TBitmap);
begin
if not Assigned(Back) then
begin
Back:=TBitmap.Create;
Back.Width:=Chart.Width;
Back.Height:=Chart.Height;
Back.Canvas.CopyRect(Chart.ClientRect, (Self.Parent as TForm).Canvas, Chart.BoundsRect);
end;
if Chart.Color=clNone then
Chart.Canvas.Draw(0,0,Back);
end;
procedure TFrame3.Timer1Timer(Sender: TObject);
begin
Chart1[0].FillSampleValues();
Chart2[0].FillSampleValues();
Chart3[0].FillSampleValues();
end;
注意,每张图表都需要初始化后位图。
不要忘记在表单的 OnCreate 事件中将图表设置为透明:
procedure TForm2.FormCreate(Sender: TObject);
begin
Frame31.Chart1.Color:=clNone;
Frame31.Chart2.Color:=clNone;
Frame31.Chart3.Color:=clNone;
end;
完整项目可用here。
【讨论】: