Hej! Detta bör fungera: Tack!Hämta färgvärdet på en pixel varsomhelst på skärme
Skulle behöva lite hjälp med följande, nämligen att hämta in färgvärdet (RGB) på en pixel varsomhelst på skärmen.
I VB.NET finns ju metoden GetPixel för Bitmap, men saken är den att jag vill inte leta efter en viss färg på en bitmap. Detta av den enkla anledning att jag förmodligen kommer ha åtskilliga bitmaps i programmet.
Hur som helst, med hjälp av Win32API ska man visst kunna använda följande funktion:
<code>
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
</code>
Frågan är bara hur jag får tag i hdc-värdet i VB.NET...
Tips? Idéer? Tänkte nämligen testa "collision detection" på så sätt att man inte ska kunna röra sig in på områden som består av en viss färg. *svammel*
/MarcusSv: Hämta färgvärdet på en pixel varsomhelst på skä
<code>
public class Win32
{
[DllImport("Gdi32.dll")]
static extern int GetPixel(IntPtr hdc,int nXPos, int nYPos);
}
public class Foo
{
protected override void OnMouseMove(MouseEventArgs e) 'Antar att du vill ha detta eventet?
{
Graphics graphics = CreateGraphics();
IntPtr hDC = graphics.GetHdc();
Color color = Win32.GetPixelColor(hDC, e.X, e.Y);
}
public static Color GetPixelColor(IntPtr hDC, int x, int y)
{
long colorRef = GetPixel(hDC, x, y);
return Color.FromArgb((byte)colorRef, (byte)(colorRef >> 8), (byte)(colorRef >> 16));
}
}
</code>
Updaterat: Skriver mest i C# hoppas du kan översätta det själv? Annars är det bara att säga till så fixar vi det :-)
Lycka till!
//Johan NSv: Hämta färgvärdet på en pixel varsomhelst på skä
Ska försöka mig på att översätta koden. Borde rimligtvis inte var så svårt, men man ska aldrig säga aldrig!
/Marcus