خواندن و نوشتن رنگ یک پیکسل به کمک توابع API

 

using System.Drawing;

usingSystem.Runtime.InteropServices;

using System.Windows.Forms;

[DllImport( “user32.dll”)]

static extern IntPtr GetDC( IntPtrhWnd );

[DllImport( “user32.dll”)]

static extern int ReleaseDC( IntPtrhWnd, IntPtr hDC );

[DllImport( “gdi32.dll” )]

static extern int GetPixel( IntPtrhDC, int x, int y );

[DllImport( “gdi32.dll” )]

static extern int SetPixel( IntPtrhDC, int x, int y, int color );

static public Color GetPixel(Control control, int x, int y )

{

Color color = Color.Empty;

if (control != null)

{

IntPtr hDC = GetDC( control.Handle);

int colorRef = GetPixel( hDC, x, y);

color = Color.FromArgb(

(int)(colorRef & 0x000000FF),

(int)(colorRef & 0x0000FF00)>> 8,

(int)(colorRef & 0x00FF0000)>> 16 );

ReleaseDC( control.Handle, hDC );

}

return color;

}

static public void SetPixel( Controlcontrol, int x, int y, Color color )

{

if (control != null)

{

IntPtr hDC = GetDC( control.Handle);

int argb = color.ToArgb();

int colorRef =

(int)((argb & 0x00FF0000)>> 16) |

(int)(argb & 0x0000FF00) |

(int)((argb & 0x000000FF)<< 16);

SetPixel( hDC, x, y, colorRef );

ReleaseDC( control.Handle, hDC );

}

}