C#中如何删除窗体上已画好的线(各位高手帮帮忙,我是新手)?

编程爱好者L 2010-08-02 09:29:23
我在窗体上画了一些线条,但是有一些地方画错了需要删除,请问一下我应该怎么选中这条线然后把它删除,删除后怎么及时的刷新窗体,把已经删除的线不显示在窗体上.各位高手帮帮忙,我是新手,如果有代码的那最好.
...全文
1369 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunchaosailor 2011-04-26
  • 打赏
  • 举报
回复
恩,我也遇到了这个问题,和楼主的一样。敢问楼主现在有招了吗?
vmkchall110 2011-03-08
  • 打赏
  • 举报
回复
其实,这问题有个非常简单的解决方法。
弄个brush把颜色调成白色
给分吧
周公 2010-08-04
  • 打赏
  • 举报
回复
你是怎么选取呢?
用鼠标么?
根据鼠标点击的位置或者拖拽出来的矩形中包含的线条就可以了。

以前在大学里学过AutoCAD,里面有类似的功能,其实主要的是你如何让用户比较方便地选取和识别,这个如果支持鼠标就相对方便些了。
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dodducs 的回复:]
你既然用Graphics 画线,,为什么不能用 Control颜色 再画一个覆盖上呢?
[/Quote]
我所画的线坐标都是要保存到数据库的,我跟你们说一下我的思路,我首先点击界面记下地点坐标,鼠标一边拖动一边画线,滑到足够长鼠标释放时记下第二点坐标,分别把画好的线存到集合里面,点击保存后一起提交到数据库,第二次打开这个页面就直接读取数据库里面的坐标进行画线.问题就在如果我把一根线画错了,想要删除,我应该怎么删除.
dodducs 2010-08-03
  • 打赏
  • 举报
回复
你既然用Graphics 画线,,为什么不能用 Control颜色 再画一个覆盖上呢?
liuh6 2010-08-03
  • 打赏
  • 举报
回复
你可以建个容器.把你操作过的图元放起来..如要册除其中一个.把他从容器中移除,再把容器中剩余的重画..
justiceyves 2010-08-03
  • 打赏
  • 举报
回复
这个我也矛盾了 帮你顶一下 帖子不要沉 等待高手来帮忙吧!
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
我画的每一条线都没有名称啊,我是根据
Graphics g = this.CreateGraphics();
g.SmoothingMode = SmoothingMode.AntiAlias;
Pen pen = new Pen(Color.Red, 3);
Point point1 = new Point(f.Ax, f.Ay);
Point point2 = new Point(f.Bx, f.By);
g.DrawLine(pen, point1, point2);
来画线的,怎么有名称呢?大哥帮解决一下,不会忘了你的
justiceyves 2010-08-03
  • 打赏
  • 举报
回复
在属性窗口的第一行有个下拉列表 你应该还记得你划线的名称吧 找到那个线的名称 选中 Delete OK!
PS:就喜欢在CSDN里打英文 雅黑字体 跟Win7一样 看着舒服!
楼主照着我的方法干 不行再联系我 我会关注你的 末了 别忘了给分 谢谢!
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
二楼说的那个我知道,但问题是我不知道怎么选择要删除的线,怎么给每条线都做上标记,然后在删除的时候我应该怎么选择.....
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
没有人回复吗,再等两天,高手帮帮忙啊
au200608 2010-08-03
  • 打赏
  • 举报
回复
呵呵,我也在等等看有没有更好的解决方案
aling437 2010-08-03
  • 打赏
  • 举报
回复
看了也白看。。。。看了半天也看不懂
期待高手出现
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 ghost281536992 的回复:]
小孩,别出口成脏。

你自己都说了是很多线,那你定义一个LINE类,里面有ID,起点,终点等属性,每画一条线,用list<LINE>{}保存,发现哪个ID的线画错了,就把它从list里删掉,然后重画一遍,懂了吗?
如果不懂,建议去看下泛型。
[/Quote]
我没骂你 谁叫你还说了一句 sodana呢 我说的找日 是叫你去找日本人懂吗?
问题已解决,谢谢大家
ghost281536992 2010-08-03
  • 打赏
  • 举报
回复
小孩,别出口成脏。

你自己都说了是很多线,那你定义一个LINE类,里面有ID,起点,终点等属性,每画一条线,用list<LINE>{}保存,发现哪个ID的线画错了,就把它从list里删掉,然后重画一遍,懂了吗?
如果不懂,建议去看下泛型。
编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 ghost281536992 的回复:]
sodana~!


引用 14 楼 llwinnner 的回复:
用泛型List<>保存,每画一条线 add一个
就可以找到了
[/Quote]

if(!sodana)
{
messagebox.show("看清我要问的,看来你是找 '日' 了");
}
ghost281536992 2010-08-03
  • 打赏
  • 举报
回复
sodana~!

[Quote=引用 14 楼 llwinnner 的回复:]
用泛型List<>保存,每画一条线 add一个
就可以找到了
[/Quote]
aitanhuan 2010-08-03
  • 打赏
  • 举报
回复
做一个keypress事件 当按住键盘delete时 鼠标点击要删除的线 就能删除

你数据库里有线的起始坐标和 结束坐标吧 可以得出一条直线的解析式

然后循环 判断鼠标点击的坐标在哪条直线上

编程爱好者L 2010-08-03
  • 打赏
  • 举报
回复
今天晚上还没有人贴出好的东东我就结贴了,这个问题等了一天了.
yinrongg 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 qq123592624 的回复:]
看来大家还是没有明白我的意思,比如我在界面上画了5跳线,我想删除第三条或者第五条,那么我该怎么删除,我的意思是我该怎么选择要删除的线.在循环遍历集合重绘之前我该如何判断那条线是被选中的?
[/Quote] 有点难度啊,你选中的线要是交叉重叠了怎么办,呵呵
加载更多回复(13)

110,545

社区成员

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

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

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