Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизПечать Найти похожие ветки
← →
fog (2006-07-29 19:52) [0]1. Как правильно пересчитать сантиметры в пикселы и наоборот зная dpi принтера?
2. Можно ли использовать ТCanvas для вывода на принтер подставив HDC принтера и как правильно это сделать? (TPrinter годится только для текста)
← →
Anatoly Podgoretsky © (2006-07-29 19:58) [1]Школьная математика, первые три класса. Перевод из одних единиц в другие.
← →
fog (2006-07-29 22:14) [2]Жутко остроумно
← →
EvS © (2006-07-29 23:39) [3]>2. Можно ли использовать ТCanvas для вывода на принтер подставив HDC
>принтера и как правильно это сделать? (TPrinter годится только для текста)
Вообще то у TPrinter свойство Canvas имеется.
← →
!_SM_! (2006-07-30 00:15) [4]Ответ про 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.
← →
fog (2006-07-30 00:42) [5]Sorry, Canvas в TPrinter не заметил.
Но, не совсем понятно, как работает NewLine?
И как выводить графику и делать это нормально?
← →
jb (2006-07-30 17:57) [6]на http://www.asportal.h16.ru посмотри, там статья такая есть - "Секреты печати из програм на Delphi" называется.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c