C# GDI+ 绘图,改变已绘制图形

春夏_秋冬 2019-03-22 09:31:47

如图,想通过拖动绿色的点,改变矩形。
问题:
当鼠标移动到绿色小点上时,鼠标样式改为手。如何检测鼠标正在绿色点上?(绿色点是找到端点画上去的GDI+)
...全文
1225 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mk_lucifer 2019-03-25
  • 打赏
  • 举报
回复
引用 5 楼 以专业开发人员为伍 的回复:
使用 WPF 的人,直接开发一个3d甚至3d的上图系统用2个月。而那些只会 winform 的人则经常是用5年以上甚至10年还在空谈 GDI+ “玩儿”点线面基本语句,这就是差别。

你这和没说一样,啥问题也没帮楼主解决。。。再说WPF的3D模型,只是个绘图模型,是不能被鼠标命中的,想向玩游戏一样去点击取某个物品,要么指望第三方,要么自己写命中,还是没解决楼主说的问题。。。
mk_lucifer 2019-03-25
  • 打赏
  • 举报
回复
任何一个可命中物体都是一个对象模型,只有将绘出的图形对象化,记录相关参数才可以做这些判断,否则随便画上去的东西,是没意义的,就像微软提供的画图板,画过去就画过去了,无法再命中,因为他没有对应模型,你的目的是做类似CAD的,那就不能这么做。。。
mk_lucifer 2019-03-25
  • 打赏
  • 举报
回复
位置捕捉,其实很简单,只是你画的东西要有模型,一般有个基础类 。。比如叫 View。。 他应该有个方法叫JudgeMouseOver。。这样就能解决问题, 对你画的所有对象进行JudgeMouseOver判断,最上层判断是true的,就使用它应该用的鼠标指针就可以了。。。
JudgeMouseOver 是个抽象方法,最简单的实现可以认为你花的东西都是矩形,判断鼠标是否在外接矩形内就可以了,游戏经常是什么干的,不管你是圆的还是三角的,都安坐矩形进行碰撞判断,所以你会发现,就打对方手指头一下,人就飞起来了,完全不合逻辑。。。对于圆线,我们还是希望命中判断时更符合实际,那么就需要自己实现JudgeMouseOver来判断命中,这就需要一些数学几何知识了,比如圆距离圆心半径就行,线条判断作出的垂线长度即可,还有就是GDI+自己也有判断点是否在Path内的函数,都可以利用。。。
sgyiliya 2019-03-25
  • 打赏
  • 举报
回复
引用 5 楼 以专业开发人员为伍 的回复:
使用 WPF 的人,直接开发一个3d甚至3d的上图系统用2个月。而那些只会 winform 的人则经常是用5年以上甚至10年还在空谈 GDI+ “玩儿”点线面基本语句,这就是差别。
学习了。
desperaso 2019-03-24
  • 打赏
  • 举报
回复
https://bbs.csdn.net/topics/392512410
  • 打赏
  • 举报
回复
使用 WPF 的人,直接开发一个3d甚至3d的上图系统用2个月。而那些只会 winform 的人则经常是用5年以上甚至10年还在空谈 GDI+ “玩儿”点线面基本语句,这就是差别。
  • 打赏
  • 举报
回复
你得学习基本的控件开发技能。仅仅会画“点、线、面”那实在是差太远了,不学习控件编程的人空谈“GDI+编程比使用控件快”其实是一遇到控件封装(各种事件、各种属性改变而改变 UI 表现)问题就怂了。
红尘待落定 2019-03-23
  • 打赏
  • 举报
回复
把图形保存为Rectangle存起来
OnMouseDown-> Rectangle.Containes(鼠标位置)-> 图形已被鼠标点击
OnMouseMove-> if (图形被点击是四周的四个点)-> 调整矩形大小-> Invalidate()
OnMouseUp-> 点击被取消
春夏_秋冬 2019-03-22
  • 打赏
  • 举报
回复
引用 1 楼 assky124 的回复:
你把四个坐标点的位置记录一下,鼠标移动的时候判断一下就完了

这个图矩形只有四个点,但是如果是跟随鼠标的画线的话,点很多,那也标记的话会不会影响性能
assky124 2019-03-22
  • 打赏
  • 举报
回复
你把四个坐标点的位置记录一下,鼠标移动的时候判断一下就完了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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