vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik und Font · Bilder & Icons   |   VB-Versionen: VB5, VB608.12.03
Beliebige Bilder aus Ressourcen-Datei laden und anzeigen

Dieser Tipp zeigt, wie sich beliebige Bilder (auch 16x16 Icon, GIF und JPG) aus einer Ressourcen-Datei laden und anzeigen lassen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  34.713 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Vor langer langer Zeit haben wir Ihnen schon einmal eine Lösung aufgezeigt, wie sich GIF- oder JPG-Bilder aus einer Ressourcen-Datei laden und anzeigen lassen. Über die VB-Funktion LoadResPicture lassen sich bekanntlich nur 32x32 Icons und BMP-Bilder aus der RES-Datei auslesen. Für andere Bildformate muss man auf die LoadResData-Funktion zurückgreifen, die den Inhalt in ein Byte-Array einliest. Dieses Byte-Array hatten wir dann in eine Datei gespeichert, so dass das Bild dann über die LoadPicture-Anweisung in einer PictureBox oder einem Image-Control angezeigt werden konnte.

Dass es auch ohne das "umständliche" Zwischenspeichern in eine temporäre Datei geht, das möchten wir Ihnen heute zeigen. Nachfolgender Tipp basiert auf unseren Extra-Tipp Dezember 2003 von LonelySuicide: Bild laden - mit Fortschrittsanzeige

Hier wurde sehr schön gezeigt, wie sich ein im Speicher (Memory) befindliches Bild mit Hilfe der API-Funktionen CreateStreamOnHGlobal und OleLoadPicture in ein StdPicture-Objekt auslesen lässt.

Erstellen Sie zunächst eine RES-Datei, mit folgendem Aufbau:

// RTF-Dokumente
1000 ICO DISCARDABLE "icon16x16.ico"

// JPG-Bilder
2000 JPG DISCARDABLE "cd.jpg"

// GIF-Bilder
3000 GIF DISCARDABLE "logo.gif"

Diese Datei wird nun mit Hilfe des Microsoft Ressourcen-Compiler zu einer .RES-Datei kompiliert und muss dem VB-Projekt hinzugefügt werden.

Die neue LoadImageFromRES-Funktion fügen Sie am besten in ein Modul ein:

Option Explicit
 
' Benötigte API-Deklarationen
Private Declare Function CreateStreamOnHGlobal Lib "ole32.dll" ( _
  ByVal hGlobal As Long, _
  ByVal fDeleteOnRelease As Long, _
  lpIStream As IUnknown) As Long
 
Private Declare Function OleLoadPicture Lib "oleaut32.dll" ( _
  ByVal lpStream As IUnknown, _
  ByVal lSize As Long, _
  ByVal fRunmode As Long, _
  riid As Any, _
  lpIPicture As IPicture) As Long
' Bild aus RES-Datei laden und 
' als StdPicture-Objekt zurückgeben
Public Function LoadImageFromRES(ByVal nResID As Long, sType) As StdPicture
  Dim IID_IPicture(3) As Long
  Dim oPicture As IPicture
  Dim bImg() As Byte
  Dim nResult As Long
  Dim oStream As IUnknown
  Dim hGlobal As Long
 
  ' Bild als ByteArray aus RES-Datei laden
  bImg = LoadResData(nResID, sType)
 
  ' Array füllen um den KlassenID (CLSID) IID_IPICTURE
  ' zu simulieren
  IID_IPicture(0) = &H7BF80980
  IID_IPicture(1) = &H101ABF32
  IID_IPicture(2) = &HAA00BB8B
  IID_IPicture(3) = &HAB0C3000
 
  ' Stream erstellen
  Call CreateStreamOnHGlobal(VarPtr(bImg(LBound(bImg))), 0, oStream)
 
  ' OLE IPicture-Objekt erstellen
  nResult = OleLoadPicture(oStream, 0, 0, IID_IPicture(0), oPicture)
  If nResult = 0 Then
    Set LoadImageFromRES = oPicture
  End If
End Function

Der Aufruf erfolgt so:

Set Image1.Picture = LoadImageFromRES(1000, "ICO")
Set Image1.Picture = LoadImageFromRES(2000, "JPG")
Set Image1.Picture = LoadImageFromRES(3000, "GIF")

Dieser Tipp wurde bereits 34.713 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel