![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать
fog © (2006-07-29 19:52:00)1. Как правильно пересчитать сантиметры в пикселы и наоборот зная dpi принтера?
2. Можно ли использовать ТCanvas для вывода на принтер подставив HDC принтера и как правильно это сделать? (TPrinter годится только для текста)
jb (2006-07-30 17:57:00) [1]на http://www.asportal.h16.ruпосмотри, там статья такая есть - "Секреты печати из програм на Delphi" называется.
fog (2006-07-30 00:42:00) [2]Sorry, Canvas в TPrinter не заметил.
Но, не совсем понятно, как работает NewLine?
И как выводить графику и делать это нормально?
!_SM_! (2006-07-30 00:15:00) [3]Ответ про Canvas дан EvS © (29.07.06 23:39)
Добавлю только рисуется обсалютно одинаково что и на....обычный канвас:)
Вот посмотри для пересчета миллиметров в пикселы:
unit Unit2;
interface
uses Windows, Printers;
procedure MMtoPXL_XY(const mmX, mmY: Double; var X, Y: Integer; SzFnt: Boolean=False);
procedure MMtoPXL_XY1(var mmX, mmY: Integer; SzFnt: Boolean=False);
procedure MMtoPXL_XY2(var mmX, mmY, mmX1, mmY1: Integer; SzFnt: Boolean=False);
var PRNLX, PRNLY, PRNPX, PRNPY: Integer; //Для вычисл принтерных величин
implementation
procedure MMtoPXL_XY(const mmX, mmY: Double; var X, Y: Integer; SzFnt: Boolean=False);
var FSz: Integer;
begin
FSz:=Printer.Canvas.TextHeight('W');
X := Round(mmX / 25.4 * PRNLX - PRNPX);
Y := Round(mmY / 25.4 * PRNLY - PRNPY);
if SzFnt then Y:=Y-FSz;
end;
procedure MMtoPXL_XY1(var mmX, mmY: Integer; SzFnt: Boolean=False);
var FSz: Integer;
begin
FSz:=Printer.Canvas.TextHeight('W');
mmX := Round(mmX / 25.4 * PRNLX - PRNPX);
mmY := Round(mmY / 25.4 * PRNLY - PRNPY);
if SzFnt then mmY:=mmY-FSz;
end;
procedure MMtoPXL_XY2(var mmX, mmY, mmX1, mmY1: Integer; SzFnt: Boolean=False);
var FSz: Integer;
begin
FSz:=Printer.Canvas.TextHeight('W');
MMtoPXL_XY1(mmX, mmY, SzFnt);
MMtoPXL_XY1(mmX1, mmY1, SzFnt);
if SzFnt then begin mmY:=mmY-FSz; mmY1:=mmY1-FSz; end;
end;
Initialization;
with Printer do
begin
PRNLX:=GetDeviceCaps(Handle, LOGPIXELSX);
PRNLY:=GetDeviceCaps(Handle, LOGPIXELSY);
PRNPX:=GetDeviceCaps(Handle, PHYSICALOFFSETX);
PRNPY:=GetDeviceCaps(Handle, PHYSICALOFFSETY);
end;
end.
EvS (2006-07-29 23:39:00) [4]>2. Можно ли использовать ТCanvas для вывода на принтер подставив HDC
>принтера и как правильно это сделать? (TPrinter годится только для текста)
Вообще то у TPrinter свойство Canvas имеется.
fog (2006-07-29 22:14:00) [5]Жутко остроумно
Anatoly Podgoretsky (2006-07-29 19:58:00) [6]Школьная математика, первые три класса. Перевод из одних единиц в другие.