![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Распечатка изображения [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);
...
... и всё пучком... :)