Von Twip in cm

Soo...
Ich habe jetzt mal "VB" aufgemacht (und das mach ich eigendlich nie, bei solchen Problemlösungen).
Habe ne PixBox, 2 TextBoxen und einen CommandButton auf ne Form gepackt.
Nun habe ich in die PictureBox ein Bild geladen (400 x 300 Pixel)
http://tbn0.google.com/images?q=tbn...ww.sportantiquariat.de/sport/bilder/19521.JPG
Picbox.Autosize = True
Form1.Scalemode = Pixel
Jetzt habe ich mir Höhe und Breite des Bildes anzeigen lassen. (Stimmte alles)
Dann habe ich festgestellt, dass du scaleheigh benutzt versuchs mal mit der PicBox.Height.
Allerdings sind die Werte bei mir dieselben.
 
Zuletzt bearbeitet:
Guten Morgen, Elvan,

danke erst mal für die Mühe, die Du Dir machst, mir zu helfen, mein Problem zu lösen!

Also ich hab jetzt das gleiche Bild wie Du genommen mit dem Ergebnis:

die Pixelwerte werden sehr wohl richtig angezeigt (vorausgesetzt, man läßt alle Umrechnungsformeln weg und bedient sich der ermittelten Werte). Nur: die Pixelwerte sind so ziemlich die einzige Einheit, die dem Anwender nichts sagt im Zusammenhang mit meinem Programm. Außerdem sind Pixel empfindlich von der Auflösung abhängig.
Da ich die Auflösung eines Bildes aber nicht so leicht ermitteln kann, kann ich aus den Pixeln auch nicht die cm errechnen.
Mir bleibt also nix anderes übrig, als mir statt der Pixel die Zentimeter anzeigen zu lassen und genau da stimmt einiges nicht mehr.

Das o.g. Bild hat folgende Masse (Breite mal Höhe):
Pixel: 93 * 124, Zentimeter: 3,28 * 4,37
angezeigte Werte:
Pixel: 93 * 124, Zentimeter: 2,46 * 3,28 (!)



Diese Funktion hier soll z.B. die HiMetric in Zentimeter umrechnen:

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

Ergebnis: 1,45 * 1,92 ........

Ich beisse gleich in die Tastatur..... Wo liegt bloß der Fehler?
Mac

PS: Scale.height und Picturebox.height sind bei mir übrigens auch identisch.
 
Hi Mac,

ich versuch Dir doch gerne zu helfen.

Ähm nichts für ungut, aber bitte höre auf, deine Funktion zu posten, denn
1. ist das genaug genommen gar keine Funktion, sondern "nur" eine Gleichung. (Eine Funktion ist ein in sich abgeschlossener Code, der (meistens) einen Wert zurückgibt, aber wenigstens eine allgemeine Gültigkeit hat (und damit ausgelagert werden kann.)
2. ....ich hab sie im Kopf und sie steht ja nun oft genug hier und wir wollen ja nichts verschwenden.

Aber nun sag mir doch mal wie Du auf
Pixel: 93 * 124, ---->> Zentimeter: 3,28 * 4,37
diese cm Werte kommst.

Die anderen können nur richtig sein.

Dein Fehler ist, das Du, den .ScaleMode nicht richtig gesetzt hast.
Denn Dein ScaleMode ist Twips, nun rechnest Du von Himetric in cm, schickst aber Twips rein!
Richtig ist:
Code:
  'um sicher zu gehen
Form1.ScaleMode = 7
With Picture2
  Picture = LoadPicture(Pfadresult)
  If Err.Number = 0 Then
    nwidth = .ScaleX(.Width, vbTwips, vbCentimeters)
    nHeight = .ScaleY(.Height, vbTwips, vbCentimeters)
  End If
  .Picture = LoadPicture()
End With
 
Zuletzt bearbeitet:
Zurück