Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вывод на принтер картинки, хранящейся в TList [D7, WinXP]


_ZeKa ©   (2005-02-01 18:30:00) 

Всем привет!

Столкнулся с такой проблемой. Вывожу на печать катинку хранящуюся в TList

  Printer.Canvas.Draw(0, 0, TBitmap(Lists.Items[0]));

Результат - пустой лист. Использую Paintbox
 
  pbPreview.Canvas.Draw(0, 0, TBitmap(Lists.Items[0]));

Рисуется нормально. В чем ошибка????


REA   (2005-02-02 14:45:00) [1]

Там StretchDiBits использовано, если не ошибаюсь.


_ZeKa   (2005-02-02 12:49:00) [2]

А если StretchDraw(...)?


REA   (2005-02-02 12:29:00) [3]

Draw работает очень плохо и не на всех принтерах.
Рекомендую использовать функцию по методу, реализованному в печати TForm.


_ZeKa   (2005-02-02 12:27:00) [4]

ПЕЧАТАЕТ!!!

СПАСИБО! Сам бы никогда не допер...


Семен Сорокин   (2005-02-02 10:16:00) [5]

принтер цветной? пытаешься распечатать цветную картинку?
попробуй перед Draw задать у битмапа PixelFormat := pf16Bit;
У меня была трабла, отсылал цветную картинку на HP Laser Jet 1200 - тоже пустой лист был, поигрался с PixelFormat - решил проблему.


_ZeKa   (2005-02-01 18:50:00) [6]

Привожу полный код


procedure TfPreview.pbPreviewPaint(Sender: TObject);
begin
 pbPreview.Canvas.Draw(0, 0, TBitmap(fPrint.Lists.Items[0]));
end;

procedure TfPrint.bbtnOKClick(Sender: TObject);
Var
 i: Integer;
begin
 Printer.BeginDoc;
 For i := 0 to Lists.Count - 1 do
 begin
   Printer.Canvas.Draw(0, 0, TBitmap(Lists.Items[i]));
   if i <> (Lists.Count - 1) then Printer.NewPage;
 end;
 Printer.EndDoc;
end;


_ZeKa   (2005-02-01 18:47:00) [7]

Именно так я и делаю. Это я для краткости


Семен Сорокин   (2005-02-01 18:44:00) [8]

Printer.BeginDoc;
Printer.Canvas.Draw(0, 0, TBitmap(Lists.Items[0]));
Printer.EndDoc;


Наверх

Титульная страница Поиск, карта сайта Написать письмо