2012-09-19 94 views
0

是否有可能使TeeChart的背景透明?我使用v2011.03.32815(Delphi XE2开箱即用的版本)。我发现一个有点工作的解决方案here但它不是我所需要的。我的DBChart位于框架内,绘制图表的背景可能会更改。那么,有什么想法?德尔福XE2 TeeChart透明度

+0

我试过的时候从未设法达到过这个效果。 – mj2008

回答

2

那个例子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

+0

这与teechart论坛中提供的示例相同。我只需要后面板*不要绘制*。 –

+0

@iManBiglari是的,对不起,我错过了线程中的代码。让我进一步调查一下,并会回复你。 –

+0

@iManBiglari再看一遍,示例中的backgorund图像是为了证明图表面板是完全透明的。无论背景如何,它都应该是这样。您可以在www.steema.net/upload/向我们发送您的问题示例项目,以便我们可以在此测试可能的解决方案吗?提前致谢。 –