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

Вниз

TBitmap не выводится на принтер   Найти похожие ветки 

 
Циркуль   (2007-05-21 12:02) [0]

Собсно, есть канва принтера, есть прямоугольник где собираемся рисовать свою картинку, есть сама картинка.

Делаем так

ACanvas.StretchDraw(R, FPicture.Graphic);

(FPicture.Graphic содержит в данном случае некий TBitmap)

На выходе из принтера - чистый лист.

Стоит добавить пару строк

 FPicture.Graphic.SaveToFile("C:\1.bmp");
 FPicture.Graphic.LoadFromFile("C:\1.bmp");

 ACanvas.StretchDraw(R, FPicture.Graphic);


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


 
{RASkov} ©   (2007-05-21 13:37) [1]

Чудес не бывает, за исключением в "Начинающих".....
покажи полный код вывода на канву принтера.... и возможно "генерации" твоего рисунка...
или же попробуй так
Printer.BeginDoc;
Printer.Canvas.StretchDraw(Printer.Canvas.ClipRect, FPicture.Graphic);
Printer.EndDoc;
У тебя не понятно, что за ACanvas и что есть R - на самом деле. Ну и FPicture.Graphic - сюда-же....


 
Влад   (2007-05-21 14:26) [2]

Может проблема у тебя не такая, но я тут недавно тоже бился с печатью битмапов. Они то не печатались, то съезжала половина страницы в общем глюки необъяснимые.. Попробуй печатать через метафайл, т.е. выводи в метафайл а затем метафайл выводи на принтер. Мои проблемы это решило.


 
Циркуль   (2007-05-22 10:57) [3]


> {RASkov} ©   (21.05.07 13:37) [1]


Хм... Полный код вывода на канву принтера займет здесь кучу места. Да и не думаю, что там что-то не так...  Упоминаемый битмап - лишь часть того, что выводится на печать в отчете... Просто недавно добавлена возможность возможность в отчеты включать изображения. Кроме него на напечатанном листе все остальное видно. На превью битмап тоже видно (отрисовывается тот же самый экземпляр), а вот на канве принтера выводится только после пары пируэтов с бубном (сохранить на диск и считать обратно). Может кто-то сталкивался с таким эффектом и знает в чем может быть причина.   :(


 
Однокамушкин   (2007-05-22 11:09) [4]

Битмапы по умолчанию хранятся в формате DDB, который зависит от устройства. У вас таким устройством, видимо, является дисплей, а не принтер, вот рисунок и оказывается несовместим с принтером... попробуйте у TBitmap свойству HandleType присвоить значение bmDIB, чтобы переконвертировать его из DDB в DIB... Желательно сразу после создания, хотя можно и потом...


> канве принтера выводится только после пары пируэтов с бубном
> (сохранить на диск и считать обратно)


Это подтверждает моё предположение... на диске битмапы всегда хранятся как DIB, поэтому прочитанный с диска рисунок имеет сразу DIB-формат... а вот созданный вручную имеет по умолчанию формат DDB...


 
Циркуль   (2007-05-22 11:47) [5]


> Однокамушкин   (22.05.07 11:09) [4]


Прямое попадание!  Все заработало, спасибо! :)



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
15-1182975866
c0deRR
2007-06-28 00:24
2007.07.29
Вот значит у меня с одним человеком есть на пару web проект


15-1183403239
KilkennyCat
2007-07-02 23:07
2007.07.29
Уберите битый пиксел. Я пугаюсь.


15-1183170285
Ино
2007-06-30 06:24
2007.07.29
Что означает такая запись? Зачем она используется?


2-1183425203
Dreamse
2007-07-03 05:13
2007.07.29
Как найти все созданные формы ? Перечислить.


15-1183111581
Alex7
2007-06-29 14:06
2007.07.29
Один из пользователей на Apple Comp (Mac OS).