[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); 
        }

解决方案 »

  1.   

    如果要比较绝对的红色,当然可以用等号:uint _ColorLong = GetPixel(_DC, e.X, e.Y); 
    Color color = ColorTranslator.FromWin32( (int)_ColorLong );
    if( color == Color.Red )
    {
       //...
    }
    如果是接近红色,则要比较各个颜色分量(例子中的10是自己定义的容忍值):if( 255 - color.R < 10 && color.G < 10 && color.B < 10 )
    {
       //...
    }