Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Вниз

Печать 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 вся ветка

Форум: "Media";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
1-71221
^Sanya
2002-08-11 09:37
2002.08.22
Search in Delphi.


4-71450
MJH
2002-06-17 18:18
2002.08.22
Крыса


3-71042
Slin
2002-08-01 16:02
2002.08.22
Господа, подскажите пожалуйста


6-71279
nikk
2002-06-09 01:26
2002.08.22
NmSmtp


14-71358
orlov
2002-07-28 06:51
2002.08.22
Как определить что написано например в строке Memo1 внутри скобкb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский