Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
ВнизПечать с канвы на принтер Найти похожие ветки
← →
Knight (2003-05-07 23:00) [0]Надо вывести в проге нестандартный график, в чартах такого не нашёл, но это ничего... сделал свой с просмотром, выбором принтера и его свойств, осталось только напечатать.
В FAQ нашёл примеры с выводом текста Printer.Canvas.TextOut(...) и файл связанный с принтером - это работает, а если с имиджа или канвы при помощи CopyRect, Draw или StretchDraw, то никакой реакции принтера не наблюдатся.
Почему???
Кто знает, как правильно организовать вывод изображения на принтер?
← →
Knight (2003-05-08 09:21) [1]Люди!!! Неужели никто не в курсе?
← →
MBo (2003-05-08 09:23) [2]покажи, как делаешь
← →
Knight (2003-05-08 09:49) [3]В FAQ так.
Procedure TForm1.Button1Click(Sender: TObject);
Begin
With Printer do Begin BeginDoc; { Начало печати }
Canvas.Font:=label1.font; { Задали шрифт }
Canvas.TextOut(100,100,"Это тест принтера !!!"); { Печатаем текст }
EndDoc; { Конец печати } end;
end;
У меня по аналогии так:
Printer.BeginDoc;
Printer.Canvas.StretchDraw(Rect(10,10,Printer.PageWidth-10,Printer.PageHeight-10),G);
Printer.EndDoc;
Пробовал просто копировать с канвы на канву принтера, тоже ничего не выдаёт... :(
← →
HSolo (2003-05-08 10:21) [4]var
image2save: TImage; // его-то и печатаем
rPrint: TRect;
ppx, ppy: double;
prnWidth, prnHeight: integer;
Printer.BeginDoc;
ppx := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX)/72;
ppy := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY)/72;
prnWidth := Round(image2save.Width*ppx);
prnHeight := Round(image2save.Height*ppy);
rPrint := Rect(0, 0, prnWidth, prnHeight);
Printer.Canvas.StretchDraw(rPrint, image2save.Picture.Bitmap);
Printer.EndDoc;
← →
Knight (2003-05-08 10:21) [5]Наверно никто не видит :(
BringToFront()... :)
← →
REA (2003-05-08 10:26) [6]Если ты Image на принтер копируешь, то посмотри реализацию TForm.Print (или TCustomForm не помню) и сделай так же.
Или используй PaintTo, или рисуй сразу на Canvas принтера.
Ну и не забывай BeginDoc, EndDoc.
← →
Knight (2003-05-08 10:43) [7]Я что-то не понял, для чего надо столько текста и чем он отличается от вашеприведённой строки... но попробовал, тоже не фурычит. TextOut() идет влёт, правда была козябра вместо русских букв, но это исправил через Font, а графика где-то застревает окончательно и бесповоротно. :(
← →
LongIsland (2003-05-08 10:53) [8]
procedure TfmMain.bnPrintClick(Sender: TObject);
var
Info: PBitmapInfo;
InfoSize, ImageSize: DWord;
Image: Pointer;
begin
if not dgPrint.Execute then Exit;
Printer.BeginDoc;
GetDIBSizes(imMain.Picture.Bitmap.Handle, InfoSize, ImageSize);
Info:=AllocMem(InfoSize);
try
Image:=AllocMem(ImageSize);
try
GetDIB(imMain.Picture.Bitmap.Handle, 0, Info^, Image^);
StretchDIBits(Printer.Canvas.Handle,
0, 0, Printer.PageWidth, Printer.PageHeight,
0, 0, imMain.Width, imMain.Height,
Image, Info^, DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Image, ImageSize);
end;
finally
FreeMem(Info, InfoSize);
end;
Printer.EndDoc;
end;
Таким образом у меня печатает на любой принтер и любые картинки, а StretchDraw может глючить
← →
ProgMan (2003-05-08 10:57) [9]Попробуй посмотреть реализацию печати в примере к TeeChart.
Вроде я оттуда дергал код, когда решал такую же проблему.
← →
Грихан (2003-05-08 12:34) [10]Реализовывал я печать в свое время. Помню, что стречкать на принтер нельзя. Можно делать Draw на канву принтера - отсуда своеобразный олгаритм для распечатки страниц. Полностью привести не могу - автор не я, но знаю точно, что вот так работает:
Printer.BeginDoc;
Printer.Canvas.Draw(NumCrossX, NumCrossY, EMF);
Printer.EndDoc;
Если заинтересовался - напиши, может смогу поподробнее ответить...
← →
Sandman25 (2003-05-08 16:10) [11]Из хелпа по Delphi6.
Note: Delphi canvases use device-dependent bitmaps to implement the Draw, StretchDraw, or CopyRect methods. Because of this, you can’t use these methods with most printers. Instead, to create graphic images on the printer’s canvas, create a device-independent bitmap and draw it directly to the canvas’s Handle property.
← →
KSergey (2003-05-09 16:31) [12]> LongIsland © (08.05.03 10:53)
А вот как на счет разных форматов? Здесь вы используете BitMap... А если исходно в TImage подгружен JPEG?
← →
Navi (2003-05-11 08:02) [13]To Sandman25 - спасибо, раскопал. Мне было лень - я допер методом проб и ошибок.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c