Форум: "Основная";
Текущий архив: 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.008 c