Von Twip in cm

MacInternet

Mitglied
Hallöchen,

es gibt leider ein weiteres Problem, dessen Lösung ich nicht finden kann. Sollte eigentlich ganz einfach sein - und klappt dennoch nicht:

der Anwender bekommt von den Bild-Dateien, die er anklickt, die Größe des Bildes mitgeteilt. In cm, weil dem Anwender Pixel herzlich wenig sagen.

VB errechnet ja nun die Bildgröße in Twip. Ich gehe davon aus, daß das ein Längenmass ist - oder liege ich da falsch?

Jedenfalls ergeben 100 Twip eine Einheit von 0,1766888 cm. Damit - sollte man meinen - ließe sich doch ganz einfach mit einem Dreisatz die reale Größe in cm angeben.

Weit gefehlt: die angegebenen Werte stimmen nicht annähernd mit den realen Werten der Dateigröße überein. Sie sind im Schnitt etwa ein Drittel zu groß angegeben.
Ich habe jetzt mehrere Funktionen, die angeblich alle Bildgrößen in cm angeben können, getestet - mit dem gleichen enttäuschenden Ergebnis.

Daher meine Frage: Kann es sein, daß Twip gar kein Längenmass ist und vielleicht die dpi mit berüchsichtigt werden müssen? Ich habe langsam keine andere Erklärung dafür.
Es wäre schön, wenn mir irgendjemand verraten könnte, wie ich die Bildgröße ermitteln und in cm angeben kann, ohne solch gravierende abweichende Werte zu bekommen.


Kann mir da bitte jemand helfen?

Dank und Gruß,
Mac
 
Hallo.

Ich kann es leider aus technischen Gründen nicht testen, aber les einmal:

wikipedia.de hat gesagt.:
Twip

aus Wikipedia, der freien Enzyklopädie


Dieser Artikel befasst sich mit der Längeneinheit Twip. Andere Bedeutungen sind unter Twip (Begriffsklärung) aufgeführt.
Basierend auf der anglo-amerikanischen Längeneinheit Point (pt), bezeichnet ein Twip die Teilung "TWentieth of an Inch Point", also 1/20 Punkt = 1/1440 Zoll.
Das Twip als extrem feine Maßeinheit (knapp 0,018 mm - ca. 57 Twips ergeben einen Millimeter) findet Verwendung in Berechnungen von Schrift und Grafik im Computerbereich, z.B. im Graphics Device Interface (GDI) von Microsofts Windows-Betriebssystem, im Dateiformat Windows Metafile (WMF), im Textformat Rich Text Format (RTF) oder im Druckdatenformat AFP.
Basierend auf dem metrischen Maßsystem wird auch die Einheit Himetric benutzt.
Siehe auch Angloamerikanisches Maßsystem.
Von „http://de.wikipedia.org/wiki/Twip
 
zur Umrechnung:

normalerweise sind 15 Twips = 1 Pixel
Warum "normalerweise"?
Naja, Twips sind halt Einheiten pro Zoll. Das bedeutet, das Du bei verschiedenen Auflösungen (DeskTop) immer dieselbe relative Position hast.
300 Twips Breite ist also (egal bei welcher Auflösung) immer gleich groß,
Eine Box von 100 Pixel x 100 Pixel wäre bei 1024 x 768 aber kleiner, als bei 800 x 600.
 
zur Umrechnung:

normalerweise sind 15 Twips = 1 Pixel
Warum "normalerweise"?
Naja, Twips sind halt Einheiten pro Zoll. Das bedeutet, das Du bei verschiedenen Auflösungen (DeskTop) immer dieselbe relative Position hast.
300 Twips Breite ist also (egal bei welcher Auflösung) immer gleich groß,
Eine Box von 100 Pixel x 100 Pixel wäre bei 1024 x 768 aber kleiner, als bei 800 x 600.

Ja, aber welche Auflösung setzt Du denn beim Vergleich zu Pixeln dort vorraus, wenn du schreibst "normalerweise"? - 100 dpi? Es muß doch irgendeine Grundsatzeinheit im Bereich der Auflösung geben, nach der das alles umgerechnet werden kann - wenigstens so, daß es einigermassen hinkommt. Auch die Größe in cm ist ja abhängig von der Auflösung des Monitors - dennoch stimmen die errechneten Werte bei der Umrechnung mit keinen anderen Werten überein.


Beispiel: ich habe einen ermittelten Wert von einer Breite von 1515 Twips. Das müssten dementsprechend 2,672294 cm sein. In Wirklichkeit ist das Bild aber gerade mal gut 1 cm breit! Und das verstehe ich nicht....
*grummel*

Jedes andere normale Programm kann doch auch die Bildgröße in cm korrekt wiedergeben - warum denn BV nicht?

Mac
 
1 cm = 567 Twips
1 Zoll = 1440 Twips
Noch schnell in ne Funktion und das ganze sieht so aus:
Code:
Public Function twips_to_cm(lTwips As Long) As Double
  twips_to_cm = CDbl(lTwips / 567)
End Function
Ich denke das sollte Dein Prob. lösen.

Hast Recht gehabt.
die Funktion war echt total fehlerhaft. Jetzt aber korrigiert und getestet
 
Zuletzt bearbeitet:
Danke für die Funktion. Allerdings löst das mein Problem keineswegs. Vielleicht ist das ja auch nicht klar rübergekommen:

es geht mir nicht darum, Funktionen zu finden, die die Bildgröße ermitteln oder umrechnen können, davon habe ich inzwischen etliche. Bloß haben sämtliche Funktionen eines gemeinsam: die ermittelte Größe stimmt überhaupt nicht! Nicht mal annähernd...:mad:

Es gibt z.B. in VB eine Funktion, die die Größe von HiMetric gleich in cm umrechnet:

Visual Basic:
With Picture2
        .Picture = LoadPicture(Pfadresult)
        If Err.Number = 0 Then
            nwidth = .ScaleX(.Width, vbHimetric, vbCentimeters)
            nHeight = .ScaleY(.Height, vbHimetric, vbCentimeters)
        End If
        .Picture = LoadPicture()
End With

Der Fehler muß also irgendwo anders liegen - aber ich kann ihn nicht finden! Darum geht es mir.
Ich bekomme alle möglichen Werte ermittelt - aber kein einziger stimmt mit der Originalgröße der Datei überein...
*schnief*

Kann wer helfen, auf die richtige Spur zu finden?
Danke, Mac
 
1 cm = 567 Twips
1 Zoll = 1440 Twips
Noch schnell in ne Funktion und das ganze sieht so aus:
Code:
Public Function twips_to_cm(lTwips As Long) As Long
  twips_to_cm = CLng(lTwips * 567)
End Function
Ich denke das sollte Dein Prob. lösen.

PS: Deine Funktion wandelt keine Twips in cm um. Schau sie Dir noch mal genauer an....
;-)

Gruß Mac
 
erstmal "HiMetric" sagt mir leider nix.

Aber zu Deinem Prob.:
Kannst Du deine Picbox nicht einfach in "cm" ändern?
Dann hättest Du doch die Maße der geladenen Bilder in cm. Reiicht das vielleicht?
Ich verstehe dein Problem so:
Du willst Bilder laden un der Andwender soll das Bild resizen können in cm, oder ?
 
erstmal "HiMetric" sagt mir leider nix.

Aber zu Deinem Prob.:
Kannst Du deine Picbox nicht einfach in "cm" ändern?
Dann hättest Du doch die Maße der geladenen Bilder in cm. Reiicht das vielleicht?
Ich verstehe dein Problem so:
Du willst Bilder laden un der Andwender soll das Bild resizen können in cm, oder ?



Hi Elvan,

nein, nein, es ist alles viel einfacher - und klappt dennoch nicht. Der Anwender soll nur die Größe in cm angezeigt bekommen, sonst nix.

Vorweg: HiMetric ist wohl die Einheit, nach der VB tatsächlich die Größe ermittelt, danach wird sie dann wohl in Twips umgewandelt. 1 HiMetric ist 1/1000tel eines Zentimeters, also 0,01 mm.
Und die Picturebox in "cm" umzuwandeln bringt gar nichts, weil das auf die Berechnung keinen Einfluss hat.

Ich geb mal ein Beispiel:

ich habe ein beliebiges Bild, dessen Original-Größe z.b. 2,77 x 4,28 cm ist. Ganz einfach also.
VB ermittelt jetzt für die Größe einen Wert von Breite: 3300 und Höhe: 5070. Entweder HiMetric oder Twips, darüber schweigt es sich leider aus.
Aber mit keiner einzigen Funktion - und ich hab schon mehr als 10 verschiedene gestestet! - bekommt man wieder die Original-Größe raus! Meistens wird eine zu große Größe zurückgegeben und je größer das Bild, desto größer die Abweichung. Bis hin zu fast 100% bei großen Bildern!
Da sowohl HiMetric als auch Twip ein von der Auflösung unabhängiges Längenmass sind, kann es daran nicht liegen. Und die PictureBox passt sich natürlich der Größe des Bildes an. Aber irgendwo muß doch ein Fehler sein....

Vielleicht helfen diese Angaben, dem Fehler weiter auf die Spur zu kommen....

Gruß Mac
 
Zurück