![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с печатью [D6, Win2k]
Trad © (2002-07-18 15:15:00)Нужно размножить картинку на листе, код такой:
...
bmp := TBitmap.Create;...
bmp.LoadFromFile("C:\Портрет товарища.bmp");
with Printer do begin
X1:=PageWidth div 2;
Y1:=PageHeight div 2;
X2:=PageWidth;
Y2:=PageHeight;
BeginDoc;
Canvas.StretchDraw(rect( 0 , 0 , X1, Y1 ), bmp);
Canvas.StretchDraw(rect( X1, 0 , X2, Y1 ), bmp);
Canvas.StretchDraw(rect( 0 , Y1, X1, Y2 ), bmp);
Canvas.StretchDraw(rect( X1, Y1, X2, Y2 ), bmp);
EndDoc;
end;
bmp.Destroy;
Проблема в том, что иногда одна, реже две, из четырех картинок не печатается. Причем не напечататься может любая, обычно первая или вторая картинка. Т.е. характер сей проблемы случайный.
В чем м.б. причина? Помогите пожалуйста.
Trad (2002-07-19 19:10:00) [1]Мне помогло следующее:
...
bmp := TBitmap.Create;
bmp.LoadFromFile("C:\Портрет товарища.bmp");
bmp.Canvas.Lock;
with Printer do begin
X1:=PageWidth div 2;
Y1:=PageHeight div 2;
X2:=PageWidth;
Y2:=PageHeight;
BeginDoc;
Canvas.StretchDraw(rect( 0 , 0 , X1, Y1 ), bmp);
Canvas.StretchDraw(rect( X1, 0 , X2, Y1 ), bmp);
Canvas.StretchDraw(rect( 0 , Y1, X1, Y2 ), bmp);
Canvas.StretchDraw(rect( X1, Y1, X2, Y2 ), bmp);
EndDoc;
end;
bmp.Canvas.Unlock;
bmp.Destroy;
...
Но почему я так и не понял. Если кто объяснить буду премного блогадарен.
Trad (2002-07-18 16:09:00) [2]Что нужно согласовывать с масштабом листа??
Ведь размер листа мне известен (PageWidth,PageHeight), а соблюдать пропорции изображения мне не надо. Мне надо только "натянуть" картинку на канву принтера (StretchDraw).
Но иногдаэтого не происходит. Почему?
Song (2002-07-18 15:22:00) [3]Нужно ещё согласовывать с масштабом листа принтера (GetDeviceCaps)