VB中窗体绘图在最小化后消失,如何解决?

RTPS:我用的是.net,不再支持AutoRedraw属性,请问高手.net中该如何解决这个问题?... RT
PS:我用的是.net,不再支持AutoRedraw属性,请问高手.net中该如何解决这个问题?
展开
 我来答
承奇水gt
2010-07-17 · TA获得超过514个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:151万
展开全部
当窗体被隐藏之后,在窗体重新出现时,系统将触发Paint事件,重绘整个窗体,此时如果Paint方法为空,那么您使用graphic对象绘制的图将全部消失。
要使您绘制的图能始终出现,您就必须在Paint事件触发时,在其方法中添加绘制窗体的代码。由于您的图是任意的,所以您可以通过使用一个全局的数组或数据结构存储在Form上的图像信息,然后在Form_Paint方法中读取图像信息并重绘。如果Form上绘制了新的图像,那么您可以将这个图像信息添加到全局的数组或数据结构中,以保证在Form上始终是正确的图像。

另外:
VB.NET2008中的AutoRedraw问题
.NET 2009-05-04 15:55:22 阅读44 评论0 字号:大中小

VB6中的PictureBox控件的有AutoRedraw属性,设置为True,则窗口最小化或被覆盖后重新打开窗口,原来的图形还在(使用Line等函数画的图形),但VB.NET没有了这个属性,为此烦了好久,MSDN上也没有找到明确的代用方法,上星期去书店翻了翻,终于明白怎么会事.

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim Bmp As Bitmap

Dim Gra As Graphics

Dim Pen As New Pen(Color.White)

Bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)

Gra = Graphics.FromImage(Bmp)

Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!

Gra.DrawArc(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia, 0, 360)

Gra.DrawLine(Pen, 0, 0, PictureBox1.Width / 2.0!, PictureBox1.Height / 2.0!)

PictureBox1.Image = Bmp

End Sub

上面代码画的图形在最小化后重新打开图形还在,下面的则没有了.

Private Sub PictureBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick

Dim Gra As Graphics = PictureBox1.CreateGraphics()

Dim Pen As New Pen(Color.Magenta)

Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!

Gra.DrawRectangle(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia)

End Sub

希望对你有帮助!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式