Как мне экспортировать TChart в растровое изображение? - PullRequest
1 голос
/ 06 января 2012

Я использую TeeChart Pro v7.06 из Steema Software и Delphi 6. В моем проекте есть TChart (BottomAxis.Automatic = False) и TChartScrollBar (для прокрутки). В TChart есть несколько серий, которые не вписываются в ширину TChart, поэтому я использую TChartScrollBar.

Мне нужно экспортировать диаграмму в TBitmap. И я не знаю, как это сделать, потому что все известные мне методы TChart экспортируют только видимую часть TChart!

Есть ли способы экспортировать весь TChart, а не только видимую часть?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Если вы используете функцию подкачки, вы можете временно отключить ее, чтобы напечатать всю серию, и снова выполнить сброс после печати.Например, имея TChart, TChartScrollBar и TButton в форме:

uses Series, TeeEdit;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Chart1.View3D:=false;

  Chart1.AddSeries(TFastLineSeries).FillSampleValues(100);

  Chart1.Pages.MaxPointsPerPage:=10;

  ChartScrollBar1.Chart:=Chart1;
  ChartScrollBar1.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var tmpCount, tmpPage: Integer;
begin
  tmpCount:=Chart1.Pages.MaxPointsPerPage;
  tmpPage:=Chart1.Pages.Current;

  Chart1.Pages.MaxPointsPerPage:=Chart1[0].Count;

  with TChartPreviewer.Create(Self) do
  begin
    Chart:=Chart1;
    Execute;
  end;

  Chart1.Pages.MaxPointsPerPage:=tmpCount;
  Chart1.Pages.Current:=tmpPage;
end;
1 голос
/ 06 января 2012

Если в вашей диаграмме много страниц, вы можете просто использовать функцию tchart.createteebitmap, прокручивая все страницы.

Например (псевдокод)

For i:= 0 To chart.numpages-1 do
  Chart.pagenum := i;
  Chart.createteebitmap(bitmap);
End;

Это позволит экспортировать все страницы графиков в отдельные растровые изображения.Если вам требуется только одно растровое изображение, вам нужно будет вручную экспортировать холст диаграмм в метафайл и затем отправить его на принтер.

...