vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Farbe eines Pixels an der Mausposition ermitteln 
Autor: T.C.McQueen
Datum: 28.09.05 13:43

Hi David,

dazu brauchst du erstmal einen Handle auf einen DeviceContext für den Desktop, den du mit der Win-API-Funktion "GetDC" aus bekommst.
Dann brauchst du die API "GetPixel" aus der gdi32 dll und die API DeleteDC.

Mit der GetDC Funktion bekommst du mit dem übergebenen Parameter 0 (null) für den Desktop, eine IntPtr-Variable zurück, die du mit dessen Methode ToInt32 in einen integer umwandeln kannst du dann mit GetPixel an den angegebenen Positionen die Pixelfarbe ebenfalls als integer-Variable zurückbekommst.

Das ganze als Code:
<DllImport("gdi32", CharSet:=CharSet.Ansi)> _
Public Shared Function DeleteDC(ByVal hdc As Integer) As Integer
<DllImport("user32", CharSet:=CharSet.Ansi)> _
Public Shared Function GetDC(ByVal hwnd As Integer) As IntPtr
<DllImport("gdi32", CharSet:=CharSet.Ansi)> _
Public Shared Function GetPixel(ByVal hdc As Integer, ByVal x As Integer, ByVal _
y As Integer) As Integer
 
Private dc as Integer
 
Private Sub ObtainDC()
    Dim ptr1 As IntPtr = API.GetDC(0)
    Me.dc = ptr1.ToInt32
End Sub
 
Private Sub FreeDC()
    API.DeleteDC(Me._dc)
End Sub
 
Public Function ToColor(ByVal colVal As Integer) As Color
    Return Color.FromArgb((colVal And 255), ((colVal And 65280) / 256), (( _
      colVal And 16711680) / 65536))
End Function
Zuerst rufst du wie gesagt die ObtainDC auf, um einen DeviceContext zu bekommen.
Dieser ist dann in der Variablen dc gespeichert.
Dann kannst du die API GetPixel aufrufen, der du dc und die Position übergibst.
Diese Funktion gibt dir dann einen integer-Wert zurück, in der die Werte R, G, B folgendermaßen als Bits kodiert sind:

XXXX BBBB GGGG RRRR

Mittels der Funktion ToColor kannst du dann den integer Wert als Color-Struktur umwandeln.

Zum Schluss solltest du mit FreeDC den DeviceContext wieder lösen.

Das war's

Gruß,
T.C.McQueen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Farbe eines Pixels an der Mausposition ermitteln1.821David M27.09.05 14:08
Re: Farbe eines Pixels an der Mausposition ermitteln1.723T.C.McQueen28.09.05 13:43
Re: Farbe eines Pixels an der Mausposition ermitteln1.101David M30.09.05 11:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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