C# 画点

画点的方法:
方法一:
     用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

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页