C # para desenhar um ponto no controle PictureBox

C # para desenhar um ponto no controle PictureBox

Como perceber que um ponto será desenhado toda vez que o botão esquerdo do mouse for clicado no controle PictureBox? Dois métodos são resumidos aqui.
Primeiro insira um controle PictureBox e um botão Botão no formulário.Quando o botão é clicado, o mouse entra no controle PictureBox e um ponto é desenhado a cada clique com o botão esquerdo.
O primeiro método:
usando GDI +, o código é o seguinte:

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

O segundo método:
chame o método SetPixel na biblioteca gdi32.dll, o código é o seguinte:

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

O segundo método desenha pontos muito pequenos, e você tem que olhar com atenção para vê-los. Portanto, não é recomendado usar o segundo método para desenhar pontos. O primeiro método é conveniente e os pontos desenhados são óbvios.

Acho que você gosta

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