![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать TJPEGImage [D7, WinXP]
Woolen © (2005-12-20 15:37:00)Поскажите, пожалуйста, как вывести на печать TJPEGImage, учитывая, что у него нет Canvas, а метод Draw закрыт от программиста и используется для библиотечных нужд?
Спасибо
Woolen (2005-12-20 17:25:00) [1]Спасибо. Я уже нашел его. Невнимательно читаю документацию...
Но тут же возник другой вопрос. Изображение не выводится. Печатается пустая страница. Что я делаю не так?
procedure TViewFileForm.PrintBtnClick(Sender: TObject);
var
ImgToPrint: TJPEGImage;
InnerHeight,InnerWidth: Integer;
PrintRect: TRect;
begin
if PrintDlg.Execute then
begin
ImgToPrint := TJPEGImage(JPEGs.Items[CurIndex]);
Printer.BeginDoc;
if (Printer.PageWidth / Printer.PageHeight) >
(ImgToPrint.Width / ImgToPrint.Height) then
begin
InnerHeight := Printer.PageHeight;
InnerWidth := Trunc(ImgToPrint.Width / ImgToPrint.Height * InnerHeight);
PrintRect.Left := Printer.PageWidth div 2 - InnerWidth div 2;
PrintRect.Top := 0;
PrintRect.Right := Printer.PageWidth div 2 + InnerWidth div 2;
PrintRect.Bottom := Printer.PageHeight - 1;
end
else
begin
InnerWidth := Printer.PageWidth;
InnerHeight := Trunc(ImgToPrint.Height / ImgToPrint.Width * InnerWidth);
PrintRect.Left := 0;
PrintRect.Top := Printer.PageHeight div 2 - InnerHeight div 2;
PrintRect.Right := Printer.PageWidth - 1;
PrintRect.Bottom := Printer.PageHeight div 2 + InnerHeight div 2;
end;
Printer.Canvas.StretchDraw(PrintRect,ImgToPrint);
Printer.EndDoc;
end;
end;
Спасибо
DVM (2005-12-20 16:50:00) [2]TPrinter.Canvas.StretchDraw()
Woolen (2005-12-20 15:50:00) [3]Прошу прощения, забыл сказать. У меня Jpeg может быть любого размера. Иногда больше принтерного листа! Иногда меньше. Мне надо его вписать в лист без потери пропорциональности изображения. Для этого я вычисляю TRect, вписаный в страницу прнтера. А вот как перенести потом в это место изображение - непонятно...
TUser (2005-12-20 15:42:00) [4]TPrinter.Canvas.Draw(0,0,JpegImage)