На форме лежит TAChart с TChartNavScrollBar. Как сохранить целый TAChart в графический файл при его увеличении?
Стандартно после увеличения сохраняеться только его видимая часть (увеличенная) а надо целый увеличенный.
Спасибо за ответыю
Модератор: Модераторы
Хочется сохранить картинку большого размера, так чтобы масштаб сохранился?
после вызова Clone его не надо записывать в переменную типа TChart
Свойства Chart1.Width and Chart1.Height возвращают размер видимой области увеличения.
Clone работает только если график создан в Design режиме.
Баг ли это?
Ask писал(а):При желании можно занести в багтрекер.
Ask писал(а):(см. собственно код SaveToFile/SaveToImage для примера).
uses TAChartUtils, TAGeometry;
procedure TForm1.tbSaveAsJPEGClick(Sender: TObject);
var
rp: TChartRenderingParams;
fn: String;
img: TJPEGImage;
scale: TDoublePoint;
begin
fn := GetFileName('jpg');
with Chart1.GetFullExtent do
scale := b - a;
with Chart1.LogicalExtent do
scale /= b - a;
rp := Chart1.RenderingParams;
img := TJPEGImage.Create;
try
img.Width := Round(Chart1.Width * scale.X);
img.Height := Round(Chart1.Height * scale.Y);
Chart1.ZoomFull;
Chart1.PaintOnCanvas(img.Canvas, Rect(0, 0, img.Width, img.Height));
img.SaveToFile(fn);
finally
img.Free;
Chart1.RenderingParams := rp;
end;
end;
procedure TMainForm.SaveChartToJpgFile(Sender: TObject);
var
rp:TChartRenderingParams;
ChartPicture:TJPEGImage;
scale: TDoublePoint;
begin
SaveDialog.DefaultExt:='.jpg';
if SaveDialog.Execute then
with QueryChart do begin
scale.X:=GetFullExtent.b.X/CurrentExtent.b.x;
scale.Y:=GetFullExtent.b.Y/CurrentExtent.b.Y;
rp:=RenderingParams;
ChartPicture:=TJPEGImage.Create;
ChartPicture.CompressionQuality:=100;
try
ChartPicture.Width:=round(Width*scale.X);
ChartPicture.Height:=round(Height*scale.Y);
QueryChart.ZoomFull;
QueryChart.PaintOnCanvas(ChartPicture.Canvas, Rect(0,0,ChartPicture.Width,ChartPicture.Height));
ChartPicture.SaveToFile(SaveDialog.FileName);
finally
ChartPicture.Free;
RenderingParams:=rp;
end;
end;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 212