请输入专案类型(网站专案或者应用程式专案):应用程式
小弟最近在写一个绘图相关的简易程式,当视窗改变时我希望先将原本的线给清掉
接着重新画上去,用的指令是:
Me.Refresh()
Me.CreateGraphics.DrawLine(BlackPen, X1, Y1, X2, Y2)
会这样做的原因是因为CreateGraphics所产生的线很容易被其它东西盖掉
因此我的程式内会有大量重绘图的指令(但是这些指令都是在我做了某些动作时才会发生
例如我画了另一条线时
但是我遇到了两个问题:
1. 首先,我在绘图区加上一条线
http://imgur.com/kQmbMzy
2. 假如这时候我开启别的程式,把绘图区盖住了,这个部分的线就会不见
http://imgur.com/NO5kwyW
http://imgur.com/o60CAnw
我找了很久,还是找不到这个事件的名称,也就是当这个Form变成最上层视窗时动作
3. 如果我改成缩小视窗的话,不足的部分会暂时被遮蔽
http://imgur.com/HPmcmFV
4. 当我重新恢复成最大化时(直接按右上角),原本被盖住的部分不会重新出现
http://imgur.com/QfrfAU6
但是我如果改用手动拉边框的话,线则会一直存在
5. 当我最小化之后再放大,一样的状况是全部的线都会消失
http://imgur.com/RKRdRQl
想请问是否有办法让所有线都能在视窗大小、顺序改变时一直存在?
我有想过用 Me.MouseMove 事件,但是这个事件会导致程式疯狂画图,搞到lag
感谢各位乡民的帮忙 > <
我发现Resize其实有动作,但是线就是画不出来...
至于第一个状况,我有试过GotFocus的指令,但是无效
※ 文章网址: https://www.ptt.cc/bbs/Visual_Basic/M.1453312672.A.97D.html
※ 编辑: dogs1231992 (140.112.22.13), 01/21/2016 02:01:09