VB.NET绘图问题:如何画一条竖线,可以用鼠标来回拖动?
vb.net吧
全部回复
仅看楼主
level 1
自由人98 楼主
画在picturebox上,背景是黑色的,线是白色的,鼠标拖着可以左右移动,类似股票软件. 当然移动时,前面显示的白线应该是消失的. 始终只看到一条竖线.
研究很长时间了,不知道这里有没有高手指点?
2013年05月21日 13点05分 1
level 10
Sub hh()
Dim Kos As New Bitmap(Pic1.Width, Pic1.Height)
Dim Vcr As Graphics
Dim Pp As New Pen(Color.Red)
Pp.Width = 2
Vcr = Graphics.FromImage(Kos)
Vcr.DrawLine(Pp, 0, 0, 100, 100)
Pic1.Image = Kos
End Sub
2013年05月22日 00点05分 2
用Invalidate.每次绘图都创建一个bitmap,如果没有及时回收会浪费很多内存。
2013年05月22日 02点05分
以上程序确实可以实现,解决了我的难题. 再请问sleepwalking: 用Invalidate是什么意思?能详细点吗?
2013年05月22日 09点05分
level 6
新开一楼好了。
@自由人98
如果调用Sub hh的话,每次调用会新建一个Bitmap,一个Graphic,一个Pen。
我觉得这样可能更好些:
把Kos定义成Public Shared,Vcr也定义成Public Shared,然后在Form load时把FromImage搞定。
hh里面只包括DrawLine和Vcr.Invalidate()
Invalidate负责抛出一个画图事件,启动Graphic内部的OnPaint函数,刷新显示。
话说.Net的画图真的挺恶心。。。但是效率是比VB6高了
2013年05月22日 10点05分 3
。。。。脑残了。。。。OnPaint和Invalidate不是Graphic的方法。。。。是PictureBox的方法。。。。应该是PicutureBox.Invalidate。。。。。。。。。
2013年05月22日 10点05分
level 13
wpf有GridSpliter控件,可以用wpf control host调用,能满足这个要求
2013年05月22日 12点05分 4
level 1
自由人98 楼主
太复杂了,效果也不好
2013年05月22日 13点05分 5
我觉得vb.net的画图功能很好的,把gdi+封装了,你想要什么的都能画出来,真的 ,我觉的用Graphics做个小游戏什么的没什么问题。除了画的时候偶尔内存不足。。。
2013年05月22日 23点05分
level 5
[大拇指]
2013年05月25日 15点05分 6
1