Rubrik: Grafik und Font · Bilder & Icons | VB-Versionen: VB5, VB6 | 05.07.02 |
Größe eines Bildes ermitteln II Eine Prozedur, mit der sich die Größe eines Bildes ermitteln lässt, ohne hierfür ein Bild-Control einsetzen zu müssen. | ||
Autor: Dieter Otter | Bewertung: | Views: 25.049 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
In einem unserer früheren Tipps haben wir Ihnen gezeigt, wie sich die Größe eines Bildes unter Verwendung eines Image-Controls ermitteln lässt. Der Nachteil dieser Variante ist, dass man eben auf der Form ein (unsichtbares) Image-Objekt benötigt.
Heute möchten wir Ihnen eine Prozedur vorstellen, mit der sich ebenfalls die Größe eines Bildes ermitteln lässt - jedoch ohne hierfür ein Image-Control verwenden zu müssen.
Ein weiterer Vorteil ist, dass Sie der Prozedur optional noch mitteilen können, in welcher Maßeinheit Sie die Größe ermittelt haben möchten (Twips, Pixel, usw.).
Und hier der Code:
' Größe eines Bildes ermitteln Public Sub GetPictureSize(F As Form, _ pPicture As StdPicture, _ nWidth As Single, nHeight As Single, _ Optional ByVal nScaleMode As _ VBRUN.ScaleModeConstants = vbTwips) With pPicture nWidth = F.ScaleX(.Width, vbHimetric, nScaleMode) nHeight = F.ScaleY(.Height, vbHimetric, nScaleMode) End With End Sub
Die Größenermittlung erfolgt über die ScaleX und ScaleY-Eigenschaften. Diese lassen sich jedoch nur auf ein Objekt anwenden, so dass Sie der Prozedur im ersten Parameter einfach ein Form-Objekt übergeben. Wichtig für die korrekte Umrechnung in die gewünschte Maßeinheit ist zu wissen, dass die Maßeinheit eines Standard-Pictures (StdPicture) immer vbHimetric ist. Der zweite Parameter erwartet das Bild. Übergeben Sie entweder die Picture-Eigenschaft eines existierenden Controls oder rufen Sie die Prozedur mit LoadPicture(Dateiname) auf. Im dritten und vierten Parameter bekommen Sie dann von der Prozedur die gewünschte Bildgröße zurückgeliefert. Der letzte Parameter ist optional und legt die gewünschte Maßeinheit fest. Wird nScaleMode nicht angegeben, werden Höhe und Breite des Bildes in Twips zurückgegeben.
Beispiel:
Dim nWidth As Single Dim nHeight As Single ' Bildgröße in Pixels GetPictureSize Me, LoadPicture("d:\bild1.jpg"), _ nWidth, nHeight, vbPixels MsgBox "Bildgröße: " & Format$(nWidth, "0") & _ Format$(nHeight, "0")
Hinweis:
Die Rückgabewerte sind abhängig von der Auflösung des Bildes. Scheinbar sind die Maße bei einer Auflösung von 96 dpi korrekt. Liegt eine andere Auflösung vor, muss man das Ergebnis noch mit dem Faktor (96 dpi / tatsächliche Auflösung) multiplizieren (das aber nur unter Vorbehalt .