问题描述
我在子窗口中定义了两个picturebox,Graphicsx1,Graphicsx2;x1=this.fan_pictureBox.CreateGraphics();x2=this.pictureBox1.CreateGraphics();然后在Onpaint里面Penpen1=newPen(Color.Blue,4);x1.DrawRectangle(pen1,10,10,20,20);x2.DrawRectangle(pen1,10,10,20,20);在主窗口里面有一个按钮启动:fm=newAirForm();fm.Show();运行之后发现没有矩形出来,这是什么原因呢,仔细看好像矩形出来又消失了?
解决方案
解决方案二:
如果是wpf的话,对话框的背景应设置为null
解决方案三:
不好意思看错了,是OnPaintt啊
解决方案四:
你在form1里新建一个按钮,点击后调用fm.Invalidate()试试呢
解决方案五:
是因为Paint顺序,先是Form.Paint,然后是PictureBox.Paint第一次加载的时候在PictureBox.Paint的时候将Form.Paint中画的矩形覆盖掉了,在你焦点离开Form再重新回到Form的时候,Form.Paint重新被调用(此时PictureBox.Paint)没有被调用,这时候矩形就显示出来了。
解决方案六:
在窗口绘制矩形问题privatevoidbutton1_Click(objectsender,EventArgse){Graphicsgraphics=this.CreateGraphics();//声明一个Graphics对象PenmyPen=newPen(Color.Blue,8);//实例化Pen类//调用Graphics对象的DrawRectangle方法graphics.DrawRectangle(myPen,10,10,150,100);}
解决方案七:
最终用了把矩形画在背景上,设置picturebox的背景为刚才的Image,图形显示出来了,关于phoenix8343_cn兄提到的PAINT的顺序,我只用了protectedoverridevoidOnPaint(PaintEventArgse)//这个重载函数,这个应该是FORM的,不知道PICTUREBOX的Onpaint如何写?
解决方案八:
能不能获取PICTUREBOX的Graphic然后直接画呢
解决方案九:
g.Refresh()
解决方案十:
引用
不知道PICTUREBOX的Onpaint如何写?
在pictureBox的事件中有的。找到后双击它就出来了。
解决方案十一:
然后引用
然后在Onpaint里面Penpen1=newPen(Color.Blue,4);x1.DrawRectangle(pen1,10,10,20,20);x2.DrawRectangle(pen1,10,10,20,20);