VB中窗体绘图在最小化后消失,如何解决?
RTPS:我用的是.net,不再支持AutoRedraw属性,请问高手.net中该如何解决这个问题?...
RT
PS:我用的是.net,不再支持AutoRedraw属性,请问高手.net中该如何解决这个问题? 展开
PS:我用的是.net,不再支持AutoRedraw属性,请问高手.net中该如何解决这个问题? 展开
1个回答
展开全部
当窗体被隐藏之后,在窗体重新出现时,系统将触发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
希望对你有帮助!
要使您绘制的图能始终出现,您就必须在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
希望对你有帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询