2012-09-19 126 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/向我們發送您的問題示例項目,以便我們可以在此測試可能的解決方案嗎?提前致謝。 –