Hallo,
Unter Delphi gelang es mir den Printer.Canvas auf mm-Bemaßung umzustellen:
procedure PrinterInitPage;
var PrDC:THandle;
Window,ViewPort:TSize;
begin
PrDC:=Printer.Canvas.Handle;
SetMapMode(PrDC,mm_lometric); {1/10 mm; x nach rechts; y nach oben !}
GetWindowExtEx(PrDC,Window); {Druckerauflösung holen}
GetViewPortExtEx(PrDC,Viewport); {Fenster dafür holen}
SetMapMode(PrDC,mm_anisotropic); {selbst definierbare Maßeinheit setzen}
SetWindowExtEx(PrDC,Window.cx,Window.cy,nil); {Druckerauflösung bestätigen}
SetViewPortExtEx(PrDC,Viewport.cx,-Viewport.cy,nil); {Fenster dafür in y-Richtung umkehren}
end;
Nun könnte ich die Pixelmaße natürlich auch selbst anpassen umd umrechnen, aber so wie ober war das schon bequem.
Da ich neu bin bei Lazarus: Geht das grundsätzlich auch? und wie?
Der Compiler scheitert schon bei SetMapMode...
Vielen Dank für Hilfen.
Printer: Umstellung auf mm-Bemaßung
Re: Printer: Umstellung auf mm-Bemaßung
Für die Cross-Platform Druckerei wird's so wohl nicht klappen (Bin kein Experte).
Aber du kriegst die Druckerauflösung mit Printer.XDPI, Printer.YDPI. (DPI=Dots per Inch).
Damit kannst du dir eine Funktion basteln, welche mm --> Inch --> Druckpunkte errechnet.
Aber du kriegst die Druckerauflösung mit Printer.XDPI, Printer.YDPI. (DPI=Dots per Inch).
Damit kannst du dir eine Funktion basteln, welche mm --> Inch --> Druckpunkte errechnet.