C#之在PictureBox控件上画点

C#之在PictureBox控件上画点

如何在PictureBox控件上实现鼠标每左击一次就会画一个点呢?这里总结了两种方法。
首先在窗体上插入PictureBox控件和一个Button按钮,当点击按钮后,鼠标进入PictureBox控件中,每左击一次画一个点。
第一种方法:
利用GDI+,代码如下:

        private string sType;//用来记录button的Name

        private void btnDrawPoint_Click(object sender, EventArgs e)
        {
    
    
            sType = "btnDrawPoint";//获取button的Name
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
    
    
            Graphics g = pictureBox1.CreateGraphics();//创建一个画板
            if (sType == "btnDrawPoint")
            {
    
    
                if (e.Button == MouseButtons.Left)
                {
    
    
                    g.FillEllipse(Brushes.Red, e.X, e.Y, 4, 4);
                }
            }
        }

第二种方法:
调用gdi32.dll库中的SetPixel方法,代码如下:

        [DllImport("gdi32.dll")]
        private static extern int SetPixel(IntPtr hdc, int x1, int y1, int color);

        private string sType;//用来记录button的Name

        private void btnDrawPoint_Click(object sender, EventArgs e)
        {
    
    
            sType = "btnDrawPoint";//获取button的Name
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
    
    
            Graphics g = pictureBox1.CreateGraphics();//创建一个画板
            PointF p = new PointF(e.X, e.Y);//实例化一个点,这个点的坐标就是鼠标的x,y

            if (sType == "btnDrawPoint")
            {
    
    
                if (e.Button == MouseButtons.Left)
                {
    
    
                    DrawPoint(g, p);//调用画点的方法,把相应参数传入
                }
            }
        }

        public void DrawPoint(Graphics g, PointF p)
        {
    
    
            IntPtr hdc = g.GetHdc();

            int color = 255;//这里定义了一个整型的颜色变量,255为红色

            SetPixel(hdc, (int)p.X, (int)p.Y, color);
            g.ReleaseHdc();
        }

第二种方法画出的点特别小,必须要仔细看才能看见,所以不推荐使用第二种方法画点,而第一种方法方便且画出的点明显。

猜你喜欢

转载自blog.csdn.net/Kevin_Sun777/article/details/108265316