![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать изображений
Pavel © (2009-10-29 17:04:00)Имеется Image, с которого нужно распечать часть изображения.
Выполняю следующим образом:
Printer.BeginDoc;
BMap4:=TBitMap.Create;
BMap4.Width:=ABS(xp4-xp1);
BMap4.Height:=ABS(yp1-yp4);
BitBlt(BMap4.Canvas.Handle, 0, 0, ABS(xp4-xp1), ABS(yp1-yp4), Image1.Canvas.Handle, xp1, yp4, SRCCOPY);
r:=Rect(236, 354, round(image1.Width * c - 177), round(image1.Height * c));
Printer.Canvas.StretchDraw(printer.Canvas.ClipRect,BMap4);
Printer.EndDoc;
В резултате принтер выдает пустую страницу.
В чем может быть проблема?
Заранее блогадарю за ответы.
Омлет. (2009-10-31 05:39:00) [1]> Верно для TImage.
Верно для TCanvas.
Jeer (2009-10-30 17:25:00) [2]
> Омлет © (29.10.09 18:57) [2]
>
> > [1] Jeer © (29.10.09 17:53)
> > GetDC(Image1.Canvas.Handle)
>
> Нет. Canvas.Handle уже и есть HDC.
>
Верно для TImage. Я глянул для своего случая, где печать TStringGrid и автоматически экстраполировал.
Вот там надо действительно GetDC(..)
Омлет (2009-10-30 16:58:00) [3]> [9] Pavel (30.10.09 15:46)
Попробуй напечатать небольшое.
Pavel (2009-10-30 15:46:00) [4]А может ли быть что изображение, которое я вывожу на принтер не помещается в буфере принтера?
Anatoly Podgoretsky (2009-10-30 12:31:00) [5]> brother (30.10.2009 11:20:07) [7]
Принтер конечно отличный, но вот про драйвера уже так сказать нельзя.
brother (2009-10-30 11:20:00) [6]> hp LaserJet 1010
отличный принтер! странно...
Pavel (2009-10-30 11:16:00) [7]hp LaserJet 1010
brother (2009-10-30 11:02:00) [8]> при выводе изображения на принтер
принтер хоть какой? может хитрые настройки?
Pavel (2009-10-30 11:01:00) [9]Проверил, изображение в файл сохрняется, при печати изображения в файл проблем не возникает. Проблема только при выводе изображения на принтер.
Омлет (2009-10-29 19:03:00) [10]> [0] Pavel (29.10.09 17:04)
Поставьте перед Printer.EndDoc
BMap4.SaveToFile('1.bmp);
И посмотрите, действительно ли там есть изображение.
А еще в дебаге стоит проверить printer.Canvas.ClipRect.
Омлет (2009-10-29 18:57:00) [11]> [1] Jeer © (29.10.09 17:53)
> GetDC(Image1.Canvas.Handle)
Нет. Canvas.Handle уже и есть HDC.
Jeer (2009-10-29 17:53:00) [12]
> Image1.Canvas.Handle
GetDC(Image1.Canvas.Handle)