![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не нашел, как получить картинку TChart'а...
Тфьу © (2006-06-06 17:22:00)Есть сохранение в файл, есть копировать в клипбоард. А как просто получить в TBitmap?
lookin (2006-06-07 21:39:00) [1]Поройся тут плз, я сейчас не могу расшифровать,
procedure TDataSheet.PrintOkButtonClick(Sender: TObject);
var i,j,n,numx,numy,w,h,xrange,yrange: integer;
r,r2: TRect;
b: TBitmap;
begin
try
case PrintIdentifier of
0: for j:=0 to Length(Previews[0])-1 do
for i:=0 to Length(Previews)-1 do begin
r:=Rect(0,0,Printer.PageWidth,Printer.PageHeight);
with Printer do begin BeginDoc;
Canvas.StretchDraw(r,Previews[i][j].Picture.Graphic);
EndDoc; end; end;
1,2: begin r:=Rect(0,0,PrintChart.Width,PrintChart.Height);
b:=TBitmap.Create; b.PixelFormat:=pf32bit;
b.Width:=PrintChart.Width; b.Height:=PrintChart.Height;
numx:=0; n:=PrintChart.Width;
while n>PrintScrollBox.ClientWidth do begin
n:=n-PrintScrollBox.ClientWidth; Inc(numx); end;
numy:=0; n:=PrintChart.height;
while n>PrintScrollBox.Clientheight do begin
n:=n-PrintScrollBox.Clientheight; Inc(numy); end;
w:=PrintScrollBox.ClientWidth; h:=PrintScrollBox.ClientHeight;
xrange:=trunc((PrintScrollBox.HorzScrollBar.Range-
PrintScrollBox.Width)/numx);
yrange:=trunc((PrintScrollBox.VertScrollBar.Range-
PrintScrollBox.Height)/numy);
for i:=0 to numx do for j:=0 to numy do begin
PrintScrollBox.HorzScrollBar.Position:=xrange*i;
PrintScrollBox.VertScrollBar.Position:=yrange*j;
PrintChart.Update;
r2:=Rect(Abs(PrintChart.Left),Abs(PrintChart.Top),
Abs(PrintChart.Left)+w,Abs(PrintChart.Top)+h);
b.Canvas.CopyRect(r2,PrintChart.Canvas.ReferenceCanvas,r2); end;
with Printer do begin BeginDoc;
Canvas.StretchDraw(r,b); EndDoc; end; b.Free; end; end;
except
if ViewXInfo.Language='English' then
MessageDlg('Printing error...',mtWarning,[mbOk],0);
if ViewXInfo.Language='Russian' then
MessageDlg('Îøèáêà ïå÷àòè...',mtWarning,[mbOk],0); end;
for i:=0 to Length(Previews)-1 do
for j:=0 to Length(Previews[i])-1 do
if Assigned(Previews[i][j]) then begin
Previews[i][j].Parent:=nil; Previews[i][j].Free; end; Previews:=nil;
PrintChart.FreeAllSeries; PrintChart.Parent:=nil;
PageControl.Pages[0].TabVisible:=true;
PageControl.Pages[1].TabVisible:=true;
PageControl.Pages[2].TabVisible:=true;
PageControl.Pages[3].TabVisible:=false;
PrintButton.Enabled:=true;
(Owner as TViewX).CloseFileButton.Enabled:=true;
PageControl.ActivePageIndex:=0; PageControl.OnChange(PageControl);
end;
EvS (2006-06-07 12:39:00) [2]А через клипбоард чем не катит? Да и доступ к Canvas имеет место быть, можно прямо с нее вытянуть.
Тфьу (2006-06-07 11:19:00) [3]Я так и делаю:
MyChart.SaveToBitmapFile(GetEnvironmentVariable('temp')+'\xxx.bmp');
Но у меня все внутри при этом переворачивается.
А еще у нас параноидальные администраторы. Чего-нибудь запретят и котенок станет песцом.
Kolan (2006-06-06 22:05:00) [4]
> Тфьу (06.06.06 17:22)
Я тоже не нашел. Делал так:
Сохранял
Chart1.SaveToBitmapFile();
а мотом загружал из файла. ..
Tonich (2006-06-06 18:51:00) [5]а блин погодь всмысле загнать класс?
Tonich (2006-06-06 18:48:00) [6]Chart1.SaveToBitmapFile();
первый нах..
видать ты его и не искал )