高分求救,vb画斜线,画完之后能够用鼠标选中。

dalilei 2006-07-01 10:29:20
我要做一个自定义工作流的程序。
有用户通过界面进行自定义流程和活动。
用户动态添加活动很容易实现。现在要把这些活动(也就是方框)用线连起来。
现在问题是如何画线,画完之后能如何用鼠标选择。
主要是因为有好多线,有些线会有很多节点。
...全文
507 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
YaDa 2006-07-02
  • 打赏
  • 举报
回复
线段还是用Line控件数组最合适,可以动态生成和删除,比直接在图片框里画要好(直接在图片框里画,为了删除,要用NotXor笔,而这就与背景有关了,容易出现带色的线条,不好看)。
选定可以用鼠标点击或画框实现,由于图片框的鼠标事件里会传回XY的坐标,所以可以判断出选中的是那个线段。只要将选中的线段变一下颜色,就可以反馈给用户了。
修改,如果比较复杂的,可以用右键提供选项甚至提供一个对话框。由于是Line控件,修改应该是很方便的。
api的绘图函数对于你的要求实际上没什么用,要高速绘图倒是不错。
最后说一下:根据你程序的要求,采用鼠标事件里XY的坐标及保存的线段数据来判断(而且修改后又要保存),是能够实现的,只是比较繁。
dalilei 2006-07-02
  • 打赏
  • 举报
回复
实际上要实现的效果就类似用Visio画流程图。
我也想做个自定义的Line控件,但如何让这个控件能够斜着放,无从下手阿。
要是只画出来,很简单的。
麻烦的是画出来后要能够选定进行修改。
明天研究一下api的绘图函数,看有没有好点的方法。

我要保存到数据路里面,保存的是坐标点。方框可以用Label控件数组实现的。
我没用过autocad。
西雀 2006-07-02
  • 打赏
  • 举报
回复
自己做个Line控件,可以感应拖拉事件


或者不管什么线不线的,就是画图,在鼠标拖拉的时候再判断是否落在线上。这也可以做个控件
woos 2006-07-02
  • 打赏
  • 举报
回复
用控件数组啊,
画的时候用可以用画图的方法画出来给用户看,然后用获得的数据load一个line控件.
fishmans 2006-07-02
  • 打赏
  • 举报
回复
嗯,没考虑到有重叠的情况,用对象应该是可行了
YaDa 2006-07-01
  • 打赏
  • 举报
回复
不知道楼主孰不熟悉AutoCAD软件,可以模仿它的方式。
“两个方框中间的一条线会有很多线段组成的。”是不是指折线?可以将整个折线定义为一个对象。反正你保存的是对象,不管他是直线,线段,折线,方框……,都是对象。
选择对象用鼠标指针的位置来判断,可以先计算是不是在线段的端点之外,再计算与线段的距离,看是不是足够接近。在图片框的鼠标移动事件里对每个线段都扫描一次。若捕获到了则……
dalilei 2006-07-01
  • 打赏
  • 举报
回复
我也想过用斜率,但也有斜率相等的线。如果斜率相等的话,再根据坐标判断在哪条线上。
这也是目前我想到的办法。我正在找有没有好点的方法。实际上每个线的末尾还要加上箭头的。
fishmans 2006-07-01
  • 打赏
  • 举报
回复
通过线的两头的坐标,可以算出斜率,再通过点击的点可以算出是否在这条线上,如果是,在mousemove事件中平移重画这条线,如果这线与别的线或框有交叉,重画所有有交叉的线或框
dalilei 2006-07-01
  • 打赏
  • 举报
回复
用Line控件是不好解决的。
每条线的坐标是肯定要保存到数据库的。
两个方框中间的一条线会有很多线段组成的。
不知道有没有好的解决方法。
不知道又没有能够获得鼠标事件的vb画线控件。
迈克揉索芙特 2006-07-01
  • 打赏
  • 举报
回复
用Line控件
zfl2k 2006-07-01
  • 打赏
  • 举报
回复
要把每条线的起始坐标都保存起来,鼠标选中后通过判断是否在两点间的线上,如果是就选中
TechnoFantasy 2006-07-01
  • 打赏
  • 举报
回复
比较简单点的你可以用VB中的Line控件。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧