En iyi yanıtlayıcılar
c# pixeldeki rengi yakalamak

Soru
-
arkadaşlar mousun gittiği herhangi bir pixeldeki rengi panele anlık yansıtmak isitiyorum uygulamada foto veya renk tekileri yakayabiliyorum ama windowsun heryerindeki pixellerdeki renkleri yakalayıp panele yansıtmak istiyorum bunu nasıl yapabilirim sağlam kaynak veya yol gösterecek olan varmı şimdiden teşekkürler
- Düzenleyen megahesap 15 Eylül 2016 Perşembe 19:39
Yanıtlar
-
-
GetPixel kullanabilirsin. Ornek:
{ Stopwatch sw = new Stopwatch(); sw.Start(); Color color = Color.Empty; while (sw.Elapsed.Seconds < 30) { var c = GetPointColor(); if (!c.IsEmpty && color.IsEmpty || color != c) { Console.WriteLine(c.ToString()); color = c; } } } private Color GetPointColor() { Color c = Color.Empty; Point p; if (GetCursorPos(out p)) { IntPtr hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, p.X, p.Y); ReleaseDC(IntPtr.Zero, hdc); c = Color.FromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16); } return c; } [DllImport("user32.dll")] static extern IntPtr GetDC(IntPtr hwnd); [DllImport("user32.dll")] static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc); [DllImport("gdi32.dll")] static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos); [DllImport("user32.dll")] public static extern bool GetCursorPos(out Point pt);
- Yanıt Olarak İşaretleyen megahesap 16 Eylül 2016 Cuma 09:42
Tüm Yanıtlar
-
-
GetPixel kullanabilirsin. Ornek:
{ Stopwatch sw = new Stopwatch(); sw.Start(); Color color = Color.Empty; while (sw.Elapsed.Seconds < 30) { var c = GetPointColor(); if (!c.IsEmpty && color.IsEmpty || color != c) { Console.WriteLine(c.ToString()); color = c; } } } private Color GetPointColor() { Color c = Color.Empty; Point p; if (GetCursorPos(out p)) { IntPtr hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, p.X, p.Y); ReleaseDC(IntPtr.Zero, hdc); c = Color.FromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16); } return c; } [DllImport("user32.dll")] static extern IntPtr GetDC(IntPtr hwnd); [DllImport("user32.dll")] static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc); [DllImport("gdi32.dll")] static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos); [DllImport("user32.dll")] public static extern bool GetCursorPos(out Point pt);
- Yanıt Olarak İşaretleyen megahesap 16 Eylül 2016 Cuma 09:42