AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken mit MM_TEXT

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

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 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.270 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.270 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
Fritzew

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

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 16:54
Aber ich erinnere mich da gab es doch so ne Tprint Komponente...
Glaube ich werde alt
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#8

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 17:42
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

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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Feb 2017 um 17:47 Uhr)
  Mit Zitat antworten Zitat
Fritzew

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

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 17:49
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
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#10

AW: Drucken mit MM_TEXT

  Alt 23. Feb 2017, 18:14
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:49 Uhr.
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