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