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

Вниз

Печать   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
4-1146047721
Still Swamp
2006-04-26 14:35
2006.08.20
Лог Windows


15-1153814754
Pazitron_Brain
2006-07-25 12:05
2006.08.20
Можно соединить КПК с


3-1150375985
Бульбаш
2006-06-15 16:53
2006.08.20
Итого по листу в Qreport


15-1153413473
MeF Dei Corvi
2006-07-20 20:37
2006.08.20
Оформление кода


2-1153995389
Couter Terranist
2006-07-27 14:16
2006.08.20
Редактирование полей + запрос