![]() |
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. |
AW: Drucken mit MM_TEXT
Hallo,
Du has also mm als Ausgangsbasis? dann Umrechner der mm in Pixel mit
Delphi-Quellcode:
Logx = deine Aktuelle Auflösung
Result := round((avalue * Logx / 25.4));
|
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 ![]() und speziell da
Delphi-Quellcode:
Nehme ich meine 720, komme ich auf die korrekten 61 mm (720*254/300).
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; Danke |
AW: Drucken mit MM_TEXT
Diese Routinen arbeiten aber mit (lometric) 1/10 mm
ansonsten stimmt das |
AW: Drucken mit MM_TEXT
Hallo,
es wird intern noch weiter hin- und hergerechnet. Ist ein alter Code aus der "Der Entwickler 1899" ;) |
AW: Drucken mit MM_TEXT
Zitat:
|
AW: Drucken mit MM_TEXT
Aber ich erinnere mich da gab es doch so ne Tprint Komponente...
Glaube ich werde alt:? |
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) |
AW: Drucken mit MM_TEXT
Zitat:
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 |
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 17:41 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