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

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

Печать TBitmap [D5]


b_o_a ©   (2002-04-16 11:25:00) 

Здрасте всем!
Собственно сабж. Как?

Олег


b_o_a   (2002-04-16 14:35:00) [1]

Ясно.

ок. Всем спасибо.


Song   (2002-04-16 14:24:00) [2]

Это артефакт из-за разности разрешения экрана (где Вы этот круг видите) и принтера. По крайней мере я не знаю как это излечить.


b_o_a   (2002-04-16 14:19:00) [3]

О, спасибо! Единстевенное чего мне не хватало -- PixelsPerInch чтобы вывести 1:1.
Но проблема не в этом -- на экране те же круги выглядят более гладкими... Это уже неизлечимо?


Song   (2002-04-16 14:00:00) [4]


Var ScaleX,ScaleY:Integer;
R:TRect;

....

With Printer Do
Begin
BeginDoc;
try
ScaleX:=GetDevicaCaps(Handle,logPixelsX) div PixelsPerInch;
ScaleY:=GetDevicaCaps(Handle,logPixelsY) div PixelsPerInch;
With BitMap1 Do R:=Rect(0,0,Width*ScaleX,Height*ScaleY);
Canvas.StretchDraw(R,BitMap);
finally
EndDoc;
end;
End;


b_o_a   (2002-04-16 13:53:00) [5]

Нужно вызывать АПИ: GetDeviceCaps() и в соответствии с этим масштабировать изображение.

В соответствии с чем? Размеры страницы в принтере я и так знаю -- Printer.PageWidth(Height). Но они ~ в 7 раз больше размеров картинки. Соответственно при масштабировании (StretchDraw) получается грубое умножение всех размеров на 7.

Избавится от этого можно только приведением размера картинки к размеру канвы принтера и её программным масштабированием или как-то по другому?


Song   (2002-04-16 13:32:00) [6]

Нужно вызывать АПИ: GetDeviceCaps() и в соответствии с этим масштабировать изображение.


b_o_a   (2002-04-16 13:27:00) [7]

Дело в том, что ширина рисунка ~640, а страницы ~ 4600.
Как их привести в соответствие?
StretchDraw-ом получается ну оооочень криво. Например там, где на экране был кружок, на принтере это тоже круг :) но из точек, размером по пол миллиметра :(


b_o_a   (2002-04-16 12:44:00) [8]

Yes.
Спасибо. Теперь другая проблема -- на экране он нормального размера, а печатается размером 1x1 см :)
tckb использовать StretchDraw то можно отмасштабировать, но масштабируется от размера 1x1 см... т.е. качество кошмарное.


kronprince   (2002-04-16 12:03:00) [9]

TPrinter.Canvas.Draw()


Наверх

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