[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hDC, int XPos, int YPos); [DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); private void Form1_MouseMove(object sender, MouseEventArgs e)
{
IntPtr _DC = GetDC(this.Handle);
uint _ColorLong = GetPixel(_DC, e.X, e.Y);
Color _Color = Color.FromArgb((int)_ColorLong & 0xFF, (int)(_ColorLong & 0xFF00) / 256, (int)(_ColorLong & 0xFF0000) / 65536); if(_ColorLong.Equals((object)Color.White))//要判断是否Wie红色,是这样写么?? {。。}
ReleaseDC(this.Handle, _DC);
}
public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("gdi32.dll")]
public static extern uint GetPixel(IntPtr hDC, int XPos, int YPos); [DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); private void Form1_MouseMove(object sender, MouseEventArgs e)
{
IntPtr _DC = GetDC(this.Handle);
uint _ColorLong = GetPixel(_DC, e.X, e.Y);
Color _Color = Color.FromArgb((int)_ColorLong & 0xFF, (int)(_ColorLong & 0xFF00) / 256, (int)(_ColorLong & 0xFF0000) / 65536); if(_ColorLong.Equals((object)Color.White))//要判断是否Wie红色,是这样写么?? {。。}
ReleaseDC(this.Handle, _DC);
}
Color color = ColorTranslator.FromWin32( (int)_ColorLong );
if( color == Color.Red )
{
//...
}
如果是接近红色,则要比较各个颜色分量(例子中的10是自己定义的容忍值):if( 255 - color.R < 10 && color.G < 10 && color.B < 10 )
{
//...
}