您的位置:程序门 -> .net技术 -> vb.net



鼠标画直线


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


鼠标画直线
发表于:2007-06-19 14:50:28 楼主
我想用vb.net写一个画直线的类
imports   system.drawing
imports   system.drawing.drawing2d
public   class   form1
        dim   startpoint   as   point
        dim   endpoint   as   point
        dim   ismousedown   as   boolean   =   false
        private   sub   pctbox_mousedown(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mousedown
                ismousedown   =   true
                startpoint.x   =   e.x
                startpoint.y   =   e.y
        end   sub
        private   sub   pctbox_mousemove(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mousemove
                dim   bmp   as   new   bitmap(pctbox.clientsize.width,   pctbox.clientsize.height)
                if   ismousedown   then
                        endpoint.x   =   e.x
                        endpoint.y   =   e.y
                        dim   mygraphics   as   graphics   =   graphics.fromimage(bmp)
                        mygraphics.drawline(pens.black,   startpoint,   endpoint)
                        pctbox.image   =   bmp
                end   if
        end   sub
        private   sub   pctbox_mouseup(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mouseup
                ismousedown   =   false
        end   sub
end   class

但是这个只能画一条,当画另一条时,第一条就删掉了
怎么才能画多条???
在线等待中
注:pctbox是picturebox控件
发表于:2007-06-19 15:38:481楼 得分:0
这个问题出现在你触发   pctbox_mousemove时,每次都会对   bitmap来一次new当然不会有2条线
发表于:2007-06-19 15:47:122楼 得分:0
你试一下这个:我刚刚改的:

imports   system.drawing
imports   system.drawing.drawing2d
public   class   form1
        dim   _graphicpic   as   graphics
        dim   startpoint   as   point
        dim   endpoint   as   point
        dim   ismousedown   as   boolean   =   false
        private   sub   pctbox_mousedown(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mousedown
                ismousedown   =   true
                startpoint.x   =   e.x
                startpoint.y   =   e.y
        end   sub
        private   sub   pctbox_mousemove(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mousemove

                if   ismousedown   then
                        endpoint.x   =   e.x
                        endpoint.y   =   e.y


                end   if
        end   sub
        private   sub   pctbox_mouseup(byval   sender   as   object,   byval   e   as   system.windows.forms.mouseeventargs)   handles   pctbox.mouseup
                _graphicpic.drawline(pens.black,   startpoint,   endpoint)
                ismousedown   =   false
        end   sub

        private   sub   pctbox_paint(byval   sender   as   object,   byval   e   as   system.windows.forms.painteventargs)   handles   pctbox.paint

        end   sub

   
        private   sub   form1_load(byval   sender   as   object,   byval   e   as   system.eventargs)   handles   me.load
                _graphicpic   =   pctbox.creategraphics()
        end   sub
end   class
发表于:2007-06-19 15:47:503楼 得分:0
是不是你想要的效果?
发表于:2007-06-19 19:06:464楼 得分:0
虽然能够同时画几条直线
但是看不出动态的效果
我是想在鼠标移动的过程中能够看得直线???
有没有更好的方法啊~
谢谢了!
发表于:2007-06-20 08:25:365楼 得分:0
去我的博客看看,有源码的

http://blog.csdn.net/wzuomin/archive/2006/12/13/1441007.aspx


快速检索

最新资讯
热门点击