C # para dibujar un punto en el control PictureBox

C # para dibujar un punto en el control PictureBox

¿Cómo darse cuenta de que se dibujará un punto cada vez que se haga clic con el botón izquierdo del mouse en el control PictureBox? Aquí se resumen dos métodos.
Primero inserte un control PictureBox y un botón Button en el formulario.Cuando se hace clic en el botón, el mouse ingresa al control PictureBox y se dibuja un punto con cada clic izquierdo.
El primer método:
usando GDI +, el código es el siguiente:

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

El segundo método:
llame al método SetPixel en la biblioteca gdi32.dll, el código es el siguiente:

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

El segundo método dibuja puntos muy pequeños y hay que mirar con atención para verlo, por lo que no se recomienda utilizar el segundo método para dibujar puntos, el primer método es conveniente y los puntos dibujados son obvios.

Supongo que te gusta

Origin blog.csdn.net/Kevin_Sun777/article/details/108265316
Recomendado
Clasificación