خواندن و نوشتن رنگ یک پیکسل به کمک توابع 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 );
}
}