Текущий архив: 2007.05.27;
Скачать: CL | DM;
ВнизПечать канвы имеджа. Найти похожие ветки
← →
Пушистый зайчик (2007-03-29 14:39) [0]Написал программу, которая строит графики в канве имеджа. Скачал из интернета две процедуры, которые позволяют распечатать содержимое image. На бумаге график расположен в верху листа во всю ширину, получается, что он занимает всего 1/4 высоты листа А4. Так как с принтером никогда не работал, подскажите как правильно переписать процедуры (приведённые ниже), чтобы ориентация листа была альбомная. Буду благодарен если дадите пару ссылок на хорошую инфу по работе с принтером. Заранее спасибо!
procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var
Header, Bits: Pointer;
HeaderSize: DWORD;
BitsSize: DWORD;
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;
procedure PrintImage(Image: TImage; ZoomPercent: Integer);
// if ZoomPercent=100, Image will be printed across the whole page
var
relHeight, relWidth: integer;
begin
Screen.Cursor := crHourglass;
Printer.BeginDoc;
with Image.Picture.Bitmap do
begin
if ((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then
begin
// Stretch Bitmap to width of PrinterPage
relWidth := Printer.PageWidth;
relHeight := MulDiv(Height, Printer.PageWidth, Width);
end
else
begin
// Stretch Bitmap to height of PrinterPage
relWidth := MulDiv(Width, Printer.PageHeight, Height);
relHeight := Printer.PageHeight;
end;
relWidth := Round(relWidth * ZoomPercent / 100);
relHeight := Round(relHeight * ZoomPercent / 100);
DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap);
end;
Printer.EndDoc;
Screen.cursor := crDefault;
end;
← →
Darvin © (2007-03-29 16:39) [1]Есть хороший пример по печати с препросмотром в книге, старой, правда:
Том Сван
Delphi4 "Библия разработчика".
Диалектика 1998
← →
Пушистый зайчик (2007-03-30 17:06) [2]Проблему решил (с помощью компонентов панели QReport) . Спасибо за поддержку!
← →
vl_chel © (2007-03-30 17:08) [3]см классы TPrinter и TCanvas
а также будет полезна функция GetDeviceCaption
Страницы: 1 вся ветка
Текущий архив: 2007.05.27;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.049 c