AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Drucken mit MM_TEXT

Ein Thema von hoika · begonnen am 23. Feb 2017 · letzter Beitrag vom 24. Feb 2017
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:09
Hallo,
ich habe hier einen alten Quellcode,
da wird SetMapMode mit MM_TEXT gesetzt.

Wie bekomme ich jetzt bei gegebenen Millimeter denn den Wert,
den ich bei Printer.Canvas.Textout angeben muss.

Aus der Hilfe:
Eine virtuelle Einheit wird in einen (1) Geräte-Bildpunkt gewandelt.
Positive x sind rechts, positive y unten.

Das ist auch im Quellcode so.

Nehmen wir mal an, wir drucken mit 300 DPI (Punkt pro Zoll, also pro 2.54 mm)
1 Punkt sind 1/72 Zoll.

Ich stehe gerade völlig auf dem Schlauch ...



Umstellen auf MM_LOMETRIC will ich das nicht, um muss bloss ein paar Positionen ändern.

So kleines Update:
Die angegebenen Pixel stehen für 300 DPI, intern wird das mit Hilfe von GetDeviceCaps(Printer.Handle,LOGPIXELSX);
in die tatsächlichen Pixel umgerechnet.

Ich habe jetrzt aber z.B. den Wert 720, der ergibt im Ausdruck etwa 60 mm.
Heiko

Geändert von hoika (23. Feb 2017 um 16:24 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:27
Hallo,

Du has also mm als Ausgangsbasis?

dann Umrechner der mm in Pixel mit

Result := round((avalue * Logx / 25.4)); Logx = deine Aktuelle Auflösung
Fritz Westermann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:31
Hallo,

Ausgangspunkt sind Punkte (im Code), ich wollte wissen, wie die MM sind,
aber ich brauche danach Deine Routine

Ich habe aber gerade auch was gefunden
http://www.delphipraxis.net/172936-d...riftarten.html
und speziell da

Delphi-Quellcode:
function TForm1.MMtoPX(inMM:Integer) : Integer;
begin
  result := Round(inMM * printer.Canvas.Font.PixelsPerInch / 254)
end;


function TForm1.PXtoMM(inPX:Integer) : Integer;
begin
  result := Round(inPX *254 / printer.Canvas.Font.PixelsPerInch)
end;
Nehme ich meine 720, komme ich auf die korrekten 61 mm (720*254/300).

Danke
Heiko

Geändert von hoika (23. Feb 2017 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:34
Diese Routinen arbeiten aber mit (lometric) 1/10 mm
ansonsten stimmt das
Fritz Westermann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:51
Hallo,
es wird intern noch weiter hin- und hergerechnet.

Ist ein alter Code aus der "Der Entwickler 1899"
Heiko
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:53
Hallo,
Ist ein alter Code aus der "Der Entwickler 1899"
Ok das war dann vor meiner Zeit Muss mal meinen Uropa fragen........
Fritz Westermann
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz