Das Image-Control verfügt im Gegensatz zum Picturebox-Control über keine Point-Funktion, mit der man den Farbwert eines bestimmten Pixels auslesen kann. Zunächst die benötigten API-Deklarationen: Option Explicit ' Benötigte API-Deklarationen Private Declare Function CreateCompatibleDC Lib "gdi32" ( _ ByVal hdc As Long) As Long Private Declare Function SelectObject Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal hObject As Long) As Long Private Declare Function GetPixel Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal X As Long, _ ByVal Y As Long) As Long Private Declare Function DeleteDC Lib "gdi32" ( _ ByVal hdc As Long) As Long Und hier die Funktion: Private Function PointImage&(Img As Image, _ X As Single, Y As Single) Dim XPx AS long Dim YPx As long Dim Imghdc As Long Dim OldHnd As Long ' Umwandeln der Koordinaten in Pixel XPx = Me.ScaleX(X, Me.ScaleMode, vbPixels) YPx = Me.ScaleY(Y, Me.ScaleMode, vbPixels) ' Generieren eines DeviceContext (DC) Imghdc = CreateCompatibleDC(Me.hdc) ' Image-Bild dem DC zuordnen OldHnd = SelectObject(Imghdc, Img.Picture.Handle) ' Pixelfarbe auslesen PointImage = GetPixel(Imghdc, XPx, YPx) ' DC wieder den alten Handle zuordnen SelectObject Imghdc, OldHnd ' DC löschen DeleteDC Imghdc End Function Ein Beispiel: Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim nRed As Integer Dim nGreen As Integer Dim nBlue As Integer Dim nColor As Long ' Farbe des Image-Controls auslesen nColor = PointImage(Image1, X, Y) ' Farbe in RGB zerlegen nRed = nColor And &HFF nGreen = (nColor \ &H100) And &HFF nBlue = (nColor \ &H10000) And &HFF ' Farbwerte im Label ausgeben Label1.AutoSize = True Label1.Caption = "Rot = " & CStr(nRed)& vbCr & _ "Grün = " & CStr(nGreen) & vbCr & _ "Blau = " & CStr(nBlue) End Sub Anmerkung: Dieser Tipp wurde bereits 15.057 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Dieter Otter Doppelte Einträge aus einer Liste entfernen (.NET) Wie man schnell alle doppelten Einträge aus einer Liste entfernt, das erfahren Sie hier. Neu! sevEingabe 3.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
|
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. |
|||||||||||||||||


Point-Funktion für das Image-Control


