C # pour dessiner un point sur le contrôle PictureBox

C # pour dessiner un point sur le contrôle PictureBox

Comment se rendre compte qu'un point sera dessiné à chaque fois que la souris est cliquée avec le bouton gauche de la souris sur le contrôle PictureBox? Deux méthodes sont résumées ici.
Insérez d'abord un contrôle PictureBox et un bouton Button sur le formulaire. Lorsque l'utilisateur clique sur le bouton, la souris entre dans le contrôle PictureBox et un point est dessiné à chaque clic gauche.
La première méthode: en
utilisant GDI +, le code est le suivant:

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

La deuxième méthode:
appelez la méthode SetPixel dans la bibliothèque gdi32.dll, le code est le suivant:

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

La deuxième méthode dessine de très petits points, et vous devez regarder attentivement pour le voir. Par conséquent, il n'est pas recommandé d'utiliser la deuxième méthode pour dessiner des points. La première méthode est pratique et les points dessinés sont évidents.

Je suppose que tu aimes

Origine blog.csdn.net/Kevin_Sun777/article/details/108265316
conseillé
Classement