Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

Печать TBitmap   Найти похожие ветки 

 
b_o_a   (2002-04-16 11:25) [0]

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

Олег


 
kronprince ©   (2002-04-16 12:03) [1]

TPrinter.Canvas.Draw()


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

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


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

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


 
Song ©   (2002-04-16 13:32) [4]

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


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

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

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

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


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


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 14:19) [7]

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


 
Song ©   (2002-04-16 14:24) [8]

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


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

Ясно.

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



Страницы: 1 вся ветка

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
3-71056
Borys
2002-08-01 15:20
2002.08.22
Rx memotable


8-71264
SPeller
2002-04-14 06:59
2002.08.22
Опять JPEG


1-71088
kronprince
2002-08-12 12:28
2002.08.22
TClientDataSet ->CommandText changes are not allowed


14-71378
Igit
2002-07-29 09:58
2002.08.22
Я фигею


1-71101
Kattzyn
2002-08-12 17:18
2002.08.22
Динамическое формирование GIF