c#如何利用鼠标绘制多边形

在窗体里面设置一个画布,然后在画布里面用鼠标左键收集点,右键表示多边形绘制完成。

写了个示例,对你有帮助能点击采纳支持下吗,谢谢~ 效果如下


        List<Point> polyPoints = null;
        bool cliceMenu = false;
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (cliceMenu)
            {
                if (e.Button == MouseButtons.Left)
                {
                    if (polyPoints == null) polyPoints = new List<Point>();
                    polyPoints.Add(e.Location);
                }
                else if (e.Button == MouseButtons.Right)
                {
                    using (var g = this.CreateGraphics())
                    {
                        g.SmoothingMode = SmoothingMode.AntiAlias;
                        g.Clear(Color.White);

                        using (SolidBrush br = new SolidBrush(Color.FromArgb(100, Color.Yellow)))
                        {
                            g.FillPolygon(br, polyPoints.ToArray());
                        }
                        g.DrawPolygon(Pens.DarkBlue, polyPoints.ToArray());

                        foreach (Point p in polyPoints)
                        {
                            g.FillEllipse(Brushes.Red,
                                                   new Rectangle(p.X - 2, p.Y - 2, 4, 4));
                        }


                        polyPoints = null;
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (var g = this.CreateGraphics())
            {
                g.Clear(this.BackColor);
            }
        }

        private void 绘制多边形ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cliceMenu = true;
        }

        private void 停止绘图ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            cliceMenu = false;
        }

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace picture3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //绘制多边形
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen Mypen = new Pen(Color .Blue ,0);
            Point p1 = new Point(50,50);
            Point p2 = new Point(80,50);
            Point p3 = new Point(30,80);
            Point p4 = new Point(60,80);
            Point[] p = { p1,p2 ,p3 ,p4 };
            g.DrawPolygon(Mypen ,p);
        }
    }
}

以上就是C#绘制多边形的代码,万望采纳。

可以参考这篇文章,希望对你有帮助:c# 鼠标绘制多边形 - 镇水古月 - 博客园 (cnblogs.com)

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);

}

那这个代码呢,你参考一下。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632