vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Grafik und Font · Bilder & Icons   |   VB-Versionen: VB5, VB605.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 OtterBewertung:  Views:  25.049 
www.tools4vb.deSystem:  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 .
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.