Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Drucken mit MM_TEXT (https://www.delphipraxis.net/191827-drucken-mit-mm_text.html)

hoika 23. Feb 2017 16:09

Drucken mit MM_TEXT
 
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.

Fritzew 23. Feb 2017 16:27

AW: Drucken mit MM_TEXT
 
Hallo,

Du has also mm als Ausgangsbasis?

dann Umrechner der mm in Pixel mit

Delphi-Quellcode:
Result := round((avalue * Logx / 25.4));
Logx = deine Aktuelle Auflösung

hoika 23. Feb 2017 16:31

AW: Drucken mit MM_TEXT
 
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

Fritzew 23. Feb 2017 16:34

AW: Drucken mit MM_TEXT
 
Diese Routinen arbeiten aber mit (lometric) 1/10 mm
ansonsten stimmt das

hoika 23. Feb 2017 16:51

AW: Drucken mit MM_TEXT
 
Hallo,
es wird intern noch weiter hin- und hergerechnet.

Ist ein alter Code aus der "Der Entwickler 1899" ;)

Fritzew 23. Feb 2017 16:53

AW: Drucken mit MM_TEXT
 
Zitat:

Zitat von hoika (Beitrag 1362451)
Hallo,
Ist ein alter Code aus der "Der Entwickler 1899" ;)

Ok das war dann vor meiner Zeit :-D Muss mal meinen Uropa fragen........

Fritzew 23. Feb 2017 16:54

AW: Drucken mit MM_TEXT
 
Aber ich erinnere mich da gab es doch so ne Tprint Komponente...
Glaube ich werde alt:?

himitsu 23. Feb 2017 17:42

AW: Drucken mit MM_TEXT
 
Joar, also MM_TEXT sind Deviceauflösung. (k.A. warum es "Text" heißt)

Also entweder man nimmt die PixelPerInch des Device
* PixelPerInch aka DPI nehmen und vor dem Verrechnen nur noch das Inch (Zoll) in Millimeter umrechnen ... schon hat man PixelPerMM :stupid:

oder man kennt die Seitenbreite oder -höhe in Millimetern teilt das durch die Pixel der Seite. (hier muß man aber eventuell auf nichtdruckbare Ränder achten und die vorher abziehen)

Fritzew 23. Feb 2017 17:49

AW: Drucken mit MM_TEXT
 
Zitat:

Joar, also MM_TEXT sind Deviceauflösung. (k.A. warum es "Text" heißt)
Entschuldigung, dachte das war klar... Sonst hätte ich mich dazu geäußert. Ich bin jetzt schon bald 30 Jahre in der CAD Branche und setze da manchmal zuviel voraus (Betriebsblind). Frage mich nie nach Datenbanken da habe ich so gut wie keine Ahnung.
Alles was mit Grafik zu tun hat ist meine Welt. Gestartet bin ich auf HP Maschinen (Apollo & co) war auch ne schöne Zeit:-D

himitsu 23. Feb 2017 18:14

AW: Drucken mit MM_TEXT
 
Mir kam es nur so vor, als wenn es nicht allen klar war.
Sicher ist Sicher. :)

PS: Man könnte sich auch einen weiteren DC drüberlegen, mit 'ner anderen Auflösung, und dann darauf malen.
Da kann es aber natürlich passieren, dass es etwas pixelig wird, was man darüber zeichnet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz