(GDI+高手请进)在画图区域内画了很多图形,如何实现选择其中的一个图形 用GDI+在panel中画了很多图形,如何实现选择其中一个进行编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先你需要把所有元素进行记录,然后在mousedown中判断所属那个区域,才能进行编辑。 这个和我完全手工绘制出来的类似excel一样,选定单元格,你可以处理鼠标按下,移动的代码,将选择的区域改变,类似单元格的选区,本来想给你代码,只是代码太多了,意思你能明白就行了 谢谢二位,但感觉还是一头雾水,liujiwe79(独孤求胜)能把代码发我邮箱吗?[email protected],谢谢了 代码太大了,这是我们公司的商业产品,不好意思,我只能给你思路,我们用c#做了个类似excel的控件,完全手工绘制的,我只能给你提供思路 自己判断用些自己的算法或者都生成区域,判断点是否在区域中可见region.isVisible(point) 我最近在用C#写一个图形编辑器,类似于JAVA里的JEF,可惜还没写完,呵呵,写完了再share吧 http://www.codeproject.com/csharp/DrawTools.asp?df=100&forumid=115683&fr=26 这个问题我也想了好久 有点想法;每个图形都跟一个struct在字典中关联struct Info{Point location;Size size;}然后单击选择事件的private void panel_MouseDown(Object sender,MouseEventArgs e){ Point selectedPoint=new Point(e.x,e.y); Info selectItem=FindSelectedItem(selectedPoint);}public Info FindSelectedItem(selectedPoint){判断的代码}不过到这发现一个问题,窗口滚动后MouseEventArgs返回的坐标是不是还要进行处理呢? lz:其实关键如何判断图形被选中的问题。对图形系统而言,一般建立抽象基类,定义一些抽象的方法,等待其派生类去实现,如:pulic class Shape{.................... public abstract bool Pick(PointF ptf);//返回真值,则说明点ptf能拾取到此图元.....................}这里已矩形为例实现:public class Rect :Shape{............... public override bool Pick(PointF ptf, VectorCanvas canvas) { Rectangle rectf = new Rectangle(m_begin, m_end); return rectf.Contains(ptf); }}其他图形对象,都必须重写Pick方法,因为每类对象判断方法都不一样。 c# login控件回车失灵 pdf图片格式问题 C#提取字符 请问一下这个问题问出在哪里? 求达人施教,求翻译人员 大哥些救命啊,头都想痛了~~为什么会少图片啊?ORACLE数据库~ C# 初学者值类型,引用类型的问题,求大家帮助一下 写一个PDF文件 问一个菜问题 如何做一个窗口,像QQ那样的,当窗口拉到左面的左、右侧窗口会自动缩小,当鼠标移到左、右侧时,窗口会呈现出来 DataGridView操作数据库的问题
每个图形都跟一个struct在字典中关联
struct Info{
Point location;
Size size;}然后单击选择事件的
private void panel_MouseDown(Object sender,MouseEventArgs e){ Point selectedPoint=new Point(e.x,e.y);
Info selectItem=FindSelectedItem(selectedPoint);
}public Info FindSelectedItem(selectedPoint){判断的代码}不过到这发现一个问题,窗口滚动后MouseEventArgs返回的坐标是不是还要进行处理呢?
pulic class Shape
{
....................
public abstract bool Pick(PointF ptf);//返回真值,则说明点ptf能拾取到此图元
.....................
}这里已矩形为例实现:public class Rect :Shape
{
...............
public override bool Pick(PointF ptf, VectorCanvas canvas)
{
Rectangle rectf = new Rectangle(m_begin, m_end);
return rectf.Contains(ptf);
}
}其他图形对象,都必须重写Pick方法,因为每类对象判断方法都不一样。