Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c