Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Распечатка изображения [D5, Win95/98]


Destroyer ©   (2002-05-20 12:43:00) 

Необходимо распечатать изображение. Делаю:
var ScaleX, ScaleY: Integer;
R: TRect;
begin
if PrintDialog.Execute then
begin
Printer.BeginDoc;
ScaleX:=Trunc((GetDeviceCaps(Printer.Handle,logPixelsX)*MainBitmap.Width)/PixelsPerInch);
ScaleY:=Trunc((GetDeviceCaps(Printer.Handle,logPixelsY)*MainBitmap.Height)/PixelsPerInch);
R:=Rect(0,0,ScaleX,ScaleY);
Printer.Canvas.StretchDraw(R,MainBitmap);
Printer.EndDoc;
end;
end;
В итоге вылазит пустой лист. Помогите понять, где ошибка, пожалуйста


Destroyer   (2002-05-21 07:34:00) [1]

Вот еще интересный момент: если перед распечаткой MainBitmap сохранить в файл, потом загрузить его в TImage и выводить на принтер содержимое этого TImage, то печатает нормальное изображение.


Destroyer   (2002-05-21 07:15:00) [2]

MainBitmap: TBitmap;

но это не суть важно...потому что даже если пытаюсь рисовать прямо на канве принтера, все равно не рисует, выдает пустой лист.


Song   (2002-05-20 14:25:00) [3]

А какой тип MainBitMap?


Destroyer   (2002-05-20 13:25:00) [4]

Но в другой программе этот StretchDraw работает, только что проверил, только там я вывожу на печать содержимое TImage. А тут пробовал и через канвас принтера рисовать - не получается...


Miwa   (2002-05-20 13:21:00) [5]

StretchDraw - в хелпе написано, что он зависит от типа принтера и вааще не рекомендуется для работы, а вместо него типа юзайте хэндл канваса принтера. Кажись так... Если честно, буквально вчера (ммм.... тоесть один сон назад ;о)) пробовал вывести таким макаром рисунок - так ничего и не вышло. :о(


Destroyer   (2002-05-20 12:53:00) [6]

>Song
Э, нет, не пучком...Тоже пустой лист. А вообще-то учет ширины и высоты картинки уже сделан при определении ScaleX и ScaleY


Song   (2002-05-20 12:48:00) [7]

...
ScaleX:=GetDeviceCaps(Printer.Handle,logPixelsX) div PixelsPerInch);
ScaleY:=GetDeviceCaps(Printer.Handle,logPixelsY) div PixelsPerInch);
R:=Rect(0,0,MainBitMap.Width*ScaleX,MainBitMap.Height*ScaleY);
...

... и всё пучком... :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо