Obtener el color de un pixel con Visual Basic .NET

He tenido que hacer algo de búsqueda por internet para conseguir crear una función que devuelva el color de un pixel cualquiera de la pantalla en VB.NET y aquí comparto mis hallazgos.

Lo cierto es que con VB.NET se puede hacer cualquir cosa que se nos ocurra, sobretodo utilizando funciones de la API de Windows.

En el caso que nos ocupa, debemos declarar las cabeceras de tres funciones de las bibliotecas (librerías) gdi32.dll y user32.dll de la siguiente manera:

Private Declare Function GetPixel Lib 'gdi32.dll' (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
Private Declare Function GetWindowDC Lib 'user32.dll' (ByVal hwnd As Integer) As Integer
Private Declare Function GetDesktopWindow Lib 'user32.dll' () As Integer

Posteriormente debemos desarrollar la función PixelColor, a la que pasaremos dos variables con las coordenadas de pantalla X e Y del punto cuyo color queramos obtener (alternativamente se le podría pasar una sola variable de tipo POINT). La función devuelve un valor de tipo COLOR que podemos utilizar donde queramos:

Public Shared Function PixelColor(ByVal x As Integer, ByVal y As Integer) As Color
Dim winDc = GetWindowDC(API.GetDesktopWindow)
Dim color = GetPixel(winDc, x, y).ToString
PixelColor = System.Drawing.ColorTranslator.FromOle(color)
End Function

Como se puede apreciar, podemos obtener el color de cualquier pixel de la pantalla, no solamente de dentro de nuestro formulario o aplicación, con lo que esta función puede resultar muy útil en varios contextos. ¿Se os ocurren aplicaciones?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *