Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизПроблеммы с размерами картинки при распечатке Найти похожие ветки
← →
Oleg Gashev (2001-12-15 11:14) [0]Никак не получается распечать Image с точными размерами. Он все равно распечатывается неправильно.
Делаю я так. Нахожу размеры Bitmapa в inch:
sx,sy:real;
ABitmap:=Image1.Picture.Bitmap;
sx:=ABitmap.Width/GetDeviceCaps(image1.canvas.handle,LOGPIXELSX);
sy:=ABitmap.Height/GetDeviceCaps(image1.canvas.handle,LOGPIXELSY);
Теперь нахожу размеры в пикселах на принтере для распечатки:
relwidth:=trunc(GetDeviceCaps(Printer.canvas.handle,LOGPIXELSX)*sx);
relheight:=trunc(GetDeviceCaps(Printer.canvas.handle,LOGPIXELSY)*sy);
Печать:
Printer.BeginDoc;
DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), ABitmap);
Printer.EndDoc;
DrawImage:
procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var Header, Bits: Pointer;
HeaderSize: Cardinal;
BitsSize: Cardinal;
begin
GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
Header := AllocMem(HeaderSize);
Bits := AllocMem(BitsSize);
try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, DestRect.Right, DestRect.Bottom, 0, 0, ABitmap.Width, ABitmap.Height, Bits,TBitmapInfo(Header^), DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Header, HeaderSize);
FreeMem(Bits, BitsSize);
end;
end;
Все это печатает с неверными размерами. Где же ошибка?
С уважением, Олег.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c