C#中winform的pictureBox控件绘制图像的问题

       刚开始本来只是想简单的制作一个图形绘制程序来练习c#(最近刚入手),但是一上来就遇见一个很奇怪的问题,那就是在想在控件pictureBox中绘制图形并且显示出来,但是我发现我在pictureBox控件中绘制的图形有几个问题:

      首先是不能在初始化的时候显示出来。然后是在后面窗体拖拽的时候,我发现当pictureBox被其他窗口遮挡(比如屏幕)的时候再拖出来就会出现被遮挡的那部分图形消失的问题。先贴出错误的代码:

 private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawRectangle(new Pen(Color.Red, 2), 20, 20, 100, 100);
            this.pictureBox1_Paint(sender,e);
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            //Bitmap bt = new Bitmap(300,300);
            Graphics g = this.pictureBox1.CreateGraphics();
            //Graphics g = Graphics.FromImage(bt);
            g.DrawRectangle(new Pen(Color.Red, 2), 0, 0, 100, 100);
            //pictureBox1.Image = bt;
        }

其中第二个函数中注释的代码是可以正确实现功能的函数。但是错误原因还是没有发现,不过我们要注意到窗体的刷新顺序:

pictureBox的刷新顺序会始终先于主窗体的刷新,其次主窗体的Init函数 >(先于的意思) load > paint。

猜你喜欢

转载自blog.csdn.net/c_living/article/details/79821003