c# 鼠标绘制多边形

简介: 引用:http://www.cnblogs.com/xpack/archive/2010/04/17/1714023.html 画多边形有专门的函数:DrawPolygon与FillPolygon,给它几个闭合的点就会成功的画出来,这没什么好说的;用鼠标动态描绘才有点意思。

引用:http://www.cnblogs.com/xpack/archive/2010/04/17/1714023.html

画多边形有专门的函数:DrawPolygon与FillPolygon,给它几个闭合的点就会成功的画出来,这没什么好说的;用鼠标动态描绘才有点意思。

     首先做之前得构思下,我想这是很有必要的:

1,多边形是由多个点与边构成的,N个点代表N边形(N>2),所以我们只要能确定点就能画出多边形;

2,动态生成点当然是由鼠标左击产生最好了;

3,既然是动态描绘,当然我们需要的是所画即所得的效果了,其实就是动态的把多边形的边画出来,我想这事情交给鼠标的移动MOVE事件最好了;

4,有了多边形的点和边,显然多边形已画出来了,此步要做的当然就是释放鼠标事件生成最终的多边形。这事一般交给鼠标UP事件,但我个人觉得还是双击事件更好,因为画点的时候也有UP事件;

5,当然想到画图就应该要注意下刷新与重绘的问题。

     有思路了没行动可不行,毛爷爷说的好,实践不仅是检验真理的标准,而且是唯一标准。

public override void OnMouseDown(SelectionUIOverlay drawArea, MouseEventArgs e)

{

    if(m_bfirst)  //首先第一次创建两个点如下(e.X, e.Y),( e.X + 1, e.Y + 1)
            {
                m_bfirst = false;
                newPolygon = new DrawPolygon(e.X, e.Y, e.X + 1, e.Y + 1);
                AddNewObject(drawArea, newPolygon);
            }

    else

    {

      Point point = new Point(e.X, e.Y);  //添加新的点
              newPolygon.AddPoint(point);

    }

}

public override void OnMouseMove(SelectionUIOverlay drawArea, MouseEventArgs e)
{

  Point point = new Point(e.X, e.Y);
      newPolygon.MoveHandleTo(point, newPolygon.HandleCount);//把新添加的点作为移动的对象,以便获得下一个新点

}

public override void OnMouseDoubleClick(SelectionUIOverlay drawArea, MouseEventArgs e)
{
      m_bfirst = true;//重新复位以便下一次画图操作
      newPolygon = null;
}

void Draw(Graphics g)

{

//画多边形可以通过画线的方式,也可以直接用画多边形的函数;两者的区别在于前者必须要画起始点与最后一个点的线以至是一个闭合的多边形

g.DrawPolygon(pen, Points);
g.FillPolygon(brush, Points);

}

深入思考:

有时我们的鼠标事件DOWN,UP,MOVE里面有许多不关图形的操作,我们可以使程序捕捉鼠标消息,直到我们把图形画出来为止,再释放消息。

for (;;)
{

    MSG msg=new MSG();
    if(GetMessage(ref msg, 0, 0, 0)!=1) break;                
    switch (msg.message)
    {
     case WM_LBUTTONUP:
     case WM_MOUSEMOVE:

      。。。。

}

相关文章
|
C#
C# WPF 中用代码模拟鼠标和键盘的操作
原文:C# WPF 中用代码模拟鼠标和键盘的操作   原文地址   C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的。
2261 0
C#编程-131:DrawPolygon绘制多边形
C#编程-131:DrawPolygon绘制多边形
309 0
C#编程-131:DrawPolygon绘制多边形
C#鼠标拖拽,移动图片实例
最近工作需要做一个鼠标可以拖拽移动图片的功能。写了几个基本功能,勉强能用。
485 0
C#鼠标拖拽,移动图片实例
|
C# Windows
C# WPF 实现鼠标固定在指定范围内运动
原文:C# WPF 实现鼠标固定在指定范围内运动   一.背景: 需要实现带有三个屏幕,三个屏幕分别显示窗体,但鼠标只能在主窗体中运动,不能移动到其他的两个附屏中。
1251 0
|
C#
C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件
原文:C#引用CefSharp并屏蔽鼠标右键和禁止拖动放置事件 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013564470/article/details/78339957 ...
4277 0
|
算法 C#
任意多边形切割/裁剪(附C#代码实现)
原文:任意多边形切割/裁剪(附C#代码实现) 本实现主要参考了发表于2003年《软件学报》的《一个有效的多边形裁剪算法》(刘勇奎,高云,黄有群)这篇论文,所使用的理论与算法大都基于本文,对论文中部分阐述进行了详细解释,并提取了论文中一些重要的理论加以汇总。
1837 0
|
C#
【C#】解决MouseHook捕获鼠标动作,在有些电脑上SetWindowsHookEx失败返回0的问题
原文:【C#】解决MouseHook捕获鼠标动作,在有些电脑上SetWindowsHookEx失败返回0的问题 最近在debug鼠标位置捕获的功能时发现在其中的一台开发电脑上,SetWindowsHookEx一直返回0,导致Hook设置失败,有时候调成Release模式又是正常的。
1348 0