画点的方法:
方法一:
用picGraphics.FillRectangle(new SolidBrush(fillColor), p.X, p.Y, 1, 1); 即用一个像素填充方法.
方法二:
用gdi32.dll库中的SetPixel方法
[DllImport("gdi32.dll")]
private static extern int SetPixel(IntPtr hdc, int x1, int y1, int color);
获得指定点的颜色:
用gdi32.dll库中的GetPixel方法
[DllImport("gdi32.dll")]
private static extern uint GetPixel(IntPtr hDC, int XPos, int YPos);
下面给出一些图形操作的集合:
#region 图形操作函数集合
[DllImport("gdi32.dll")]
private static extern uint GetPixel(IntPtr hDC, int XPos, int YPos);
[DllImport("gdi32.dll")]
private static extern int SetPixel(IntPtr hdc, int x1, int y1, int color);
static public byte GetRValue(uint color)
{
return (byte)color;
}
static public byte GetGValue(uint color)
{
return ((byte)(((short)(color)) >> 8));
}
static public byte GetBValue(uint color)
{
return ((byte)((color) >> 16));
}
static public byte GetAValue(uint color)
{
return ((byte)((color) >> 24));
}
private uint RGB(Color color)
{
// 返回由RGB构成的32位uint
uint R = color.R;
uint G = color.G;
uint B = color.B;
G <<= 8;
B <<= 16;
return ((uint)(R|G|B));
}
public Color GetColor(Point p)
{
// 得到指定点的颜色RGB
uint colorref = GetPixel(this.picGraphics.GetHdc(), p.X, p.Y); // picGraphics是我用picturePox类中的CreateGraphics方法创建的Graphics对象
this.picGraphics.ReleaseHdc();
byte Red = GetRValue(colorref);
byte Green = GetGValue(colorref);
byte Blue = GetBValue(colorref);
return Color.FromArgb(Red, Green, Blue);
}
public void SetColor(Point p, Color fillColor)
{
SetPixel(this.picGraphics.GetHdc(), p.X, p.Y, (int)RGB(fillColor));
this.picGraphics.ReleaseHdc();
}
#endregion
希望对大家有所帮助!