0

TeeChartの背景を透明にすることは可能ですか?私はv2011.03.32815(Delphi XE2に付属しているバージョン)を使用しています。私はここでいくぶんうまくいく解決策を見つけましたが、それは私が必要としているものではありません。私DBChartのはフレームの中にあり、チャートが描かれる背景が変わる可能性があります。それで、何かアイデアはありますか?

4

1 に答える 1

3

Yerayがここに投稿した例はどうですか?

これを複数のグラフ フォーム/パネルに適用すると、次のようになります。

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;

完全なプロジェクトはこちらから入手できます。

于 2012-09-19T09:40:10.233 に答える