Ich hab's jetzt folgendermassen gemacht:
Zu Beginn setze ich die folgenden Werte bzw. den folgenden Mode:
Delphi-Quellcode:
GesamtHoehe := GetDeviceCaps(
Handle, VERTSIZE)*10;
Gesamtbreite := GetDeviceCaps(
Handle, HORZSIZE)*10;
SetMapMode(
Handle, MM_TEXT);
Die Angaben, die ich den Druckroutinen übergebe, sind in 0.1mm angrgeben, umgerechnet werden sie dann in Pixel:
Delphi-Quellcode:
FUNCTION XPosition(const x:Integer):Integer;
BEGIN
Result := Trunc(x * Printer.PageWidth / Gesamtbreite);
END;
FUNCTION YPosition(const y:Integer):Integer;
BEGIN
Result := Trunc(y * Printer.PageHeight / Gesamthoehe);
END;
FUNCTION XWidth(const x:Integer):Integer;
BEGIN
Result := Trunc(x / (Printer.PageWidth / Gesamtbreite));
END;
FUNCTION YHeight(const y:Integer):Integer;
BEGIN
Result := Trunc(y / (Printer.PageHeight / Gesamthoehe));
END;
Scheint soweit zu funktionieren.