C# picturebox在form_load和最小化后内容无法显示

用C#写个picturebox,代码如下:

 private void paint2(){
   Graphics g = pictureBox.CreateGraphics();
   g.Clear(Color.White);
   Point p1 = new Point(10,0);
   Point p2 = new Point(10, 20);
   g.DrawLine(new Pen(Color.Blue, 2), p2, p1);
 }

无论将该函数在Form_Load中调用还是在Paint事件中调用(窗口最小化后再出现,paint2调用但是没有画出),都画不出这条蓝色的直线。

后来想了一下原因:这个方法是直接在picturebox上画图,以上两种情况有一个共同点,就是窗口还没有显示出来,这就导致方法调用后,后面又被其他方法覆盖掉了,或者说窗口还不可见,画不上。以上都有可能,我也只是猜测。

为了避免这个问题,我们不要直接在picturebox上画,可以先画在一张位图上,然后将位图赋值给picturebox.Image,这个属性,这样我们画的东西就丢不了了,代码修改为:

private void paint2()
        {
            Bitmap b = new Bitmap(this.pictureBox.Width, this.pictureBox.Height);
            Graphics g = Graphics.FromImage((System.Drawing.Image)b);
            Point p1 = new Point(10,0);
            Point p2 = new Point(10, 20);
            g.DrawLine(new Pen(Color.Blue, 2), p2, p1);
            this.pictureBox.Image = b;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值