我对第一个Tabpage中的panel1作图:
Dim tmppen As New Drawing.Pen(Color.LimeGreen)
Dim tmpgraphics As Graphics
tmppen.Width = 2
tmpgraphics = Panel1.CreateGraphics
tmpgraphics.DrawLine(tmppen, 0, 0, 100, 100)
tmpgraphics.Dispose()
tmppen.Dispose()
画完图,会显示一条曲线,这是对的,但当我切换Tabpage,再回到第一个tabpage,
原先的曲线就不见了,这是怎么回事?该怎样解决?
5 个解决方案
#1
难道这个问题很难么?为什么没人回?
#2
vb.net没有了vb的autoredraw属性。你智能写代码。
把这个代码加到tabpage的paint事件中!就可以了。
Dim tmppen As New Drawing.Pen(Color.LimeGreen)
Dim tmpgraphics As Graphics
tmppen.Width = 2
tmpgraphics = Panel1.CreateGraphics
tmpgraphics.DrawLine(tmppen, 0, 0, 100, 100)
tmpgraphics.Dispose()
tmppen.Dispose()
把这个代码加到tabpage的paint事件中!就可以了。
Dim tmppen As New Drawing.Pen(Color.LimeGreen)
Dim tmpgraphics As Graphics
tmppen.Width = 2
tmpgraphics = Panel1.CreateGraphics
tmpgraphics.DrawLine(tmppen, 0, 0, 100, 100)
tmpgraphics.Dispose()
tmppen.Dispose()
#3
可是,panel1中的图形不是静止的,而是变化的,如果在paint重绘事件
用不变的代码,就不能达到效果了。
我举个例子,最简单的在form1上有一个panel,一个button负责在panel上画
条线,另外一个button负责产生另一个窗体form2,当你画了一条线,再产生
form2,这时form2挡住了form1,你使form1位于最上面,结果你发现panel上的线不在了
用不变的代码,就不能达到效果了。
我举个例子,最简单的在form1上有一个panel,一个button负责在panel上画
条线,另外一个button负责产生另一个窗体form2,当你画了一条线,再产生
form2,这时form2挡住了form1,你使form1位于最上面,结果你发现panel上的线不在了
#4
而且,窗体的paint事件,panel的事件根本没有触发
#5
我来收分!
把你画图的代码写成这样的形式:
private sub Draw(byval whichGraphics as Graphics)
with whichGraphics
..............'你的代码
end with
end sub
在Panel_Paint事件中,调用这段代码:Draw(e.graphics)
在Button1_Click事件中,调用这段代码: Draw(panel1.CreateGraphics)
有问题给我留言,我在线。
把你画图的代码写成这样的形式:
private sub Draw(byval whichGraphics as Graphics)
with whichGraphics
..............'你的代码
end with
end sub
在Panel_Paint事件中,调用这段代码:Draw(e.graphics)
在Button1_Click事件中,调用这段代码: Draw(panel1.CreateGraphics)
有问题给我留言,我在线。
#1
难道这个问题很难么?为什么没人回?
#2
vb.net没有了vb的autoredraw属性。你智能写代码。
把这个代码加到tabpage的paint事件中!就可以了。
Dim tmppen As New Drawing.Pen(Color.LimeGreen)
Dim tmpgraphics As Graphics
tmppen.Width = 2
tmpgraphics = Panel1.CreateGraphics
tmpgraphics.DrawLine(tmppen, 0, 0, 100, 100)
tmpgraphics.Dispose()
tmppen.Dispose()
把这个代码加到tabpage的paint事件中!就可以了。
Dim tmppen As New Drawing.Pen(Color.LimeGreen)
Dim tmpgraphics As Graphics
tmppen.Width = 2
tmpgraphics = Panel1.CreateGraphics
tmpgraphics.DrawLine(tmppen, 0, 0, 100, 100)
tmpgraphics.Dispose()
tmppen.Dispose()
#3
可是,panel1中的图形不是静止的,而是变化的,如果在paint重绘事件
用不变的代码,就不能达到效果了。
我举个例子,最简单的在form1上有一个panel,一个button负责在panel上画
条线,另外一个button负责产生另一个窗体form2,当你画了一条线,再产生
form2,这时form2挡住了form1,你使form1位于最上面,结果你发现panel上的线不在了
用不变的代码,就不能达到效果了。
我举个例子,最简单的在form1上有一个panel,一个button负责在panel上画
条线,另外一个button负责产生另一个窗体form2,当你画了一条线,再产生
form2,这时form2挡住了form1,你使form1位于最上面,结果你发现panel上的线不在了
#4
而且,窗体的paint事件,panel的事件根本没有触发
#5
我来收分!
把你画图的代码写成这样的形式:
private sub Draw(byval whichGraphics as Graphics)
with whichGraphics
..............'你的代码
end with
end sub
在Panel_Paint事件中,调用这段代码:Draw(e.graphics)
在Button1_Click事件中,调用这段代码: Draw(panel1.CreateGraphics)
有问题给我留言,我在线。
把你画图的代码写成这样的形式:
private sub Draw(byval whichGraphics as Graphics)
with whichGraphics
..............'你的代码
end with
end sub
在Panel_Paint事件中,调用这段代码:Draw(e.graphics)
在Button1_Click事件中,调用这段代码: Draw(panel1.CreateGraphics)
有问题给我留言,我在线。