Bitdaten aus Bildern in VB5

Tach zusammen.
Ich möchte ein Programm schreiben, dass Bilder aus Standardformaten lädt, z.B. mit LoadPicture und dem IPictureDisp, und diese Bilder in ein Riesenarray mit den R-, G- und B-Werten sämtlicher Pixel zerpflückt. Mein Problem ist, dass ich nicht weiß, wie ich an die Bitdaten des Bildes rankomme.

Kennt ihr eine Lösung (z.B. um mit dem OLE_HANDLE im IPictureDisp umzugehen etc.), damit ich mein Programm schreiben kann?

Danke im Voraus
Stefan Majewsky
[email protected]
bei persönlichen Anfragen besser an [email protected]

Hallo Stefan

Vielleicht hilft Dir dieses Beispiel ja weiter, wenn nicht, geh mal
auf diese Seite und gib
‚rgb ermitteln‘ ein. Da kommen einige Beispiele die mit RGB zu tun
haben. Da wird bestimmt was für Dich dabei sein.

Jürgen

RGB-Farbwerte ermitteln

Die RGB-Funktion gibt einen Farbwert vom Typ Long zurück. Jedes der drei Argumente (RGB = rot, grün, blau oder ganz korrekt: red, green, blue) kann Werte im Bereich von 0 bis 255 annehmen, so dass man sich beliebige Farben zusammenmischen kann.

Beispiel:

’ Hintergrundfarbe einem Formular beim Start zuweisen
Private Sub Form_Load()
Me.BackColor = RGB(255, 0, 128)
End Sub

Mit dieser Farbzuweisung erreichen Sie ein kräftiges Pink für Ihren Hintergrund. Was nun aber, wenn man eine Farbe hat und die in die einzelnen RGB-Bestandteile zerlegen will? Versuchen Sie mal folgendes:

Sie starten ein neues Projekt und fügen auf der Form von links nach rechts drei Shapes hinzu. Jedem Shape ordnen Sie in den Eigenschaften FillStyle = 0 - Ausgefüllt zu und FillColor - wieder von links nach rechts - rot, grün und blau. Unter diesen Shapes fügen Sie drei Label als Steuerelemetefeld ein (über Kopieren und Einfügen). Außerdem benötigen Sie noch einen CommandButton und die CommonDialog-Komponente. Dann diesen Code einfügen:

Option Explicit

’ benutzerdefinierter Datentyp
Private Type tRGB
rot As Byte
grün As Byte
blau As Byte
End Type

’ die Funktion hierzu
Private Function GetRGB(Farbe As Long) As tRGB
GetRGB.rot = (Farbe And &HFF&amp:wink:
GetRGB.grün = (Farbe And &HFF00&amp:wink: \ 256
GetRGB.blau = (Farbe And &HFF0000) \ 65536
End Function

’ und jetzt die Sub zum Testen
Private Sub Command1_Click()
Dim myRGB As tRGB
CommonDialog1.ShowColor
myRGB = GetRGB(CommonDialog1.Color)
Label1(0).Caption = myRGB.rot
Label1(1).Caption = myRGB.grün
Label1(2).Caption = myRGB.blau
End Sub

Starten Sie Ihr Programm und wählen Sie eine Farbe aus. In den Labels werden nun die entsprechenden RGB-Anteile angezeigt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]