Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

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

 
Woolen ©   (2005-12-20 15:37) [0]

Поскажите, пожалуйста, как вывести на печать TJPEGImage, учитывая, что у него нет Canvas, а метод Draw закрыт от программиста и используется для библиотечных нужд?
Спасибо


 
TUser ©   (2005-12-20 15:42) [1]

TPrinter.Canvas.Draw(0,0,JpegImage)


 
Woolen ©   (2005-12-20 15:50) [2]

Прошу прощения, забыл сказать. У меня Jpeg может быть любого размера. Иногда больше принтерного листа! Иногда меньше. Мне надо его вписать в лист без потери пропорциональности изображения. Для этого я вычисляю TRect, вписаный в страницу прнтера. А вот как перенести потом в это место изображение - непонятно...


 
DVM ©   (2005-12-20 16:50) [3]

TPrinter.Canvas.StretchDraw()


 
Woolen ©   (2005-12-20 17:25) [4]

Спасибо. Я уже нашел его. Невнимательно читаю документацию...
Но тут же возник другой вопрос. Изображение не выводится. Печатается пустая страница. Что я делаю не так?

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;


Спасибо



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

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
3-1143097634
dolmat
2006-03-23 10:07
2006.05.14
в чем причина не обновления поля


1-1144318196
Kolan
2006-04-06 14:09
2006.05.14
Работа с компонентом AsyncProfessional


2-1145685513
jiny
2006-04-22 09:58
2006.05.14
Функция возвращает кол-во секунд, прошед. после полуночи


1-1144404671
Kolan
2006-04-07 14:11
2006.05.14
Как отладить работу COM сервера и клиента?


15-1145426710
Chaser
2006-04-19 10:05
2006.05.14
INI файлы и учетные записи