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

Вниз

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

 
Far   (2003-07-25 00:21) [0]

Уважаемые! Подскажите самый простой способ масштабирования изображения типа TBitmap при выводе на принтер. Не хочется использовать готовые отчеты, но необходимо сохранить нормальный размер изображения на печати.


 
Marser   (2003-07-25 01:27) [1]

Если речь идет о сохранении пропорций рисунка, то проще не бывет: Image1.Proportional:=true


 
MBo   (2003-07-25 07:22) [2]

Canvas.StretchDraw
Stretchblt


 
Far   (2003-07-25 17:16) [3]

После применения Canvas.StretchDraw с масштабированием на коэфициент принтер/экран, рисунок получается в крапинку, а хотелось бы сохранить качество изображения


 
Song   (2003-07-25 17:17) [4]

Это скорей драйвер принтера глючит чем TCanvas


 
Far   (2003-07-25 17:34) [5]

Врядли. Принтер самый обычный (HP LaserJet 6L)


 
ggsoft   (2003-07-25 17:35) [6]

SetMapMode(), SetViewportOrgEx()...


 
Anatoly Podgoretsky   (2003-07-25 18:16) [7]

Far (25.07.03 17:34)
О знаменитые НР драйвера, чудо программисткого разума.


 
Far   (2003-07-25 22:17) [8]

А может про это можно где-то почитать, если примерчик дать влом?


 
KSergey   (2003-07-26 09:04) [9]

Подробности читать по ссылке
Собственно процедуру просто так даю, не претендуя на ее хорошесть. И вообще стырена из приведенного фака. Она универсальная для любого формата картинки, потому там и есть создание временного битмапа. Если картинка уже битмап - нифига промежуточного создавать не нужно. ARect - размер и оложение картинки в текущих координатах принтера

// печать картинок - эта ф-ция была взята за основу, теперь испоьзуется несколько переделанный вариант
// (c) wea@felten.co.at (Alexander Wernhart)
// On Tue, 4 Feb 1997 20:54:43 -0300, Ruy Ponce de Leon Junior <rplj@di.ufpe.br>
// http://doc.trecom.tomsk.su/Delphi/UnofficialDevelopersFAQ/pages/printer.htm
{ procedure PicturePrint(APic: TPicture; ARect: TRect);
var
Info: PBitmapInfo;
InfoSize, ImageSize: DWord;
Image: Pointer;
BitMap: TBitmap;
begin
Printer.Canvas.Brush.Style := bsClear; // сам добавил; не уверен, что надо
BitMap := TBitmap.Create; // весь дальнейший код работает только с Bitmap
try
BitMap.Assign (APic.Graphic);
GetDIBSizes (BitMap.Handle, InfoSize, ImageSize);
Info := AllocMem (InfoSize);
try
Image := AllocMem (ImageSize);
try
GetDIB (BitMap.Handle, 0, Info^, Image^);
CalcCardPrRect (n);
StretchDIBits (Printer.Canvas.Handle,
ARect.Left, ARect.Top, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top,
0, 0, BitMap.Width, BitMap.Height,
Image, Info^, DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Image, ImageSize);
end;
finally
FreeMem(Info, InfoSize);
end;
finally
BitMap.Free;
end;
end; // procedure PicturePrint
}


 
Far   (2003-07-26 15:17) [10]

to KSergey ©
Спасибо огромное за помощь и поддержку! Сейчас буду пробовать.



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

Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
8-20638
Bill
2003-04-15 16:03
2003.08.07
Фон под текстом


3-20443
Ross
2003-07-17 13:20
2003.08.07
Refresh IBDataset1


1-20589
Skif
2003-07-23 06:02
2003.08.07
Не удаляется файл при поиске


3-20418
Денис Курьин
2003-07-16 11:38
2003.08.07
SQL выбор максимального значения из нескольких полей


1-20625
Zhuchok
2003-07-25 01:53
2003.08.07
TaskBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский