【问题标题】:TeeChart Transparency in Delphi XE2Delphi XE2 中的 TeeChart 透明度
【发布时间】:2012-09-19 09:32:40
【问题描述】:

是否可以使 TeeChart 的背景透明?我正在使用 v2011.03.32815(与 Delphi XE2 一起开箱即用的版本)。我找到了一个可行的解决方案here,但这不是我需要的。我的DBCharts 在一个框架内,绘制图表的背景可能会发生变化。那么,有什么想法吗?

【问题讨论】:

  • 我尝试过时从未成功过。

标签: delphi transparency teechart


【解决方案1】:

Yeray 发布的here 示例怎么样?

这应用于多图表表单/面板可能是这样的:

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

【讨论】:

  • 这与teechart论坛中提供的示例相同。我只需要后面板不被绘制
  • @iManBiglari 是的,抱歉,我错过了线程中的代码。让我对此进行进一步调查,然后再与您联系。
  • @iManBiglari 再看一遍,示例中的背景图像是为了证明图表面板是完全透明的。无论背景如何,都应该是这样。您能否在 www.steema.net/upload/ 上向我们发送您的问题的示例项目,以便我们可以在这里测试可能的解决方案?提前致谢。
  • @iManBiglari 感谢您的项目。您甚至没有尝试在其上实现图表透明度。无论如何,我指出的线程中代码的问题在于,一旦矩形没有被更新,就分配了后位图。请参阅我更新的回复。完整项目可在steema.us/files/public/ChartTest.zip 获得
  • @iManBiglari 在这种情况下,您需要存储每个图表的初始位图。查看更新的答案和项目。
猜你喜欢
  • 2013-08-06
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
相关资源
最近更新 更多