• 大小: 61KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C#
  • 标签:

资源简介

本工程是用C#语言编写,通过实现道格拉斯普克算法,达到了对线段的简化,其中递归的思想值得学习!

资源截图

代码片段和文件信息

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


namespace 道格拉斯普克算法
{
    public partial class Form1 : Form
    {
        List linePtList = new List();//原始点集
        List ptL = new List();//简化后的点集
        bool moving = true;//绘图与否
        bool before = false;//简化与否

        public Form1()
        {
            InitializeComponent();
        }

        //panel1的Paint方法,将线画在其上
        private void panel1_Paint(object sender PaintEventArgs e)
        {
            Graphics g = this.panel1.CreateGraphics();
            Pen pen = new Pen(Color.Red);//实例化 画笔对象
            Pen pen1 = new Pen(Color.Blue);
            pen1.Dashstyle = System.Drawing.Drawing2D.Dashstyle.Dot;//样式为:虚线
            int count = linePtList.Count - 1;
            //原始点的绘图
            for (int i = 0; i < count; i++)
            {
                Point start = linePtList[i];
                Point end = linePtList[i + 1];
                g.DrawLine(pen start end);
            }
            //简化后的点的绘图
            if (before)
            {
                for (int j = 0; j < ptL.Count - 1; j++)
                {
                    Point start = ptL[j];
                    Point end = ptL[j + 1];
                    g.DrawLine(pen1 start end);
                }
            }
        }

        private void panel1_MouseDown(object sender MouseEventArgs e)
        {
            //判断是否正在画线,是的话就记录点击位置坐标
            if (moving)
            {
                Point pt = new Point(e.X e.Y);
                linePtList.Add(pt);
                ptL.Add(pt);
                this.panel1.Invalidate(true);
            }
        }

        private void panel1_DoubleClick(object sender EventArgs e)
        {
            //停止绘图
            moving = false;
            this.panel1.Cursor = Cursors.Arrow;
        }

        private void panel1_MouseMove(object sender MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && moving)
            {
                Point pt = new Point(e.X e.Y);
                linePtList.Add(pt);
                ptL.Add(pt);
                this.panel1.Invalidate(true);
            }
            //动态显示鼠标位置坐标
            labX.Text = “X:“ + e.X.ToString();
            labY.Text = “Y:“ + e.Y.ToString();

        }

        private void btnSimp_Click(object sender EventArgs e)
        {
            //执行压缩函数,并经绘制压缩后的线段
            before = true;
            lineCompress(0 linePtList.Count - 1);
            this.panel1.Invalidate();
        }

        //线段压缩函数
        private void lineCompress(int from int to)
        {
            //判断点数是否大于或等于3个
            if (tbYz.Text.ToString().Length == 0)
            {
                Message

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-08-31 18:36  道格拉斯普克算法\
     文件         187  2014-08-31 10:48  道格拉斯普克算法\App.config
     目录           0  2014-08-31 10:48  道格拉斯普克算法\bin\
     目录           0  2014-09-28 19:47  道格拉斯普克算法\bin\Debug\
     文件       13824  2014-10-01 20:14  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.exe
     文件         187  2014-08-31 10:48  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.exe.config
     文件       28160  2014-10-01 20:14  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.pdb
     文件       22984  2014-10-06 19:56  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.vshost.exe
     文件         187  2014-08-31 10:48  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.vshost.exe.config
     文件         490  2010-03-17 22:39  道格拉斯普克算法\bin\Debug\道格拉斯普克算法.vshost.exe.manifest
     文件        6189  2014-10-06 18:30  道格拉斯普克算法\Form1.cs
     文件        8431  2014-09-28 19:42  道格拉斯普克算法\Form1.Designer.cs
     文件        5817  2014-09-28 19:42  道格拉斯普克算法\Form1.resx
     目录           0  2014-08-31 10:48  道格拉斯普克算法\obj\
     目录           0  2014-10-01 20:14  道格拉斯普克算法\obj\Debug\
     文件        1308  2014-08-31 18:40  道格拉斯普克算法\obj\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6955  2014-09-28 19:40  道格拉斯普克算法\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件           0  2014-08-31 10:48  道格拉斯普克算法\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2014-08-31 10:48  道格拉斯普克算法\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2014-08-31 10:48  道格拉斯普克算法\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
     目录           0  2014-08-31 10:48  道格拉斯普克算法\obj\Debug\TempPE\
     文件        1668  2014-10-06 19:56  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.csproj.FileListAbsolute.txt
     文件         975  2014-09-28 19:47  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.csproj.GenerateResource.Cache
     文件        2209  2014-09-28 19:47  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.csprojResolveAssemblyReference.cache
     文件       13824  2014-10-01 20:14  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.exe
     文件         180  2014-09-28 19:47  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.Form1.resources
     文件       28160  2014-10-01 20:14  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.pdb
     文件         180  2014-09-28 19:47  道格拉斯普克算法\obj\Debug\道格拉斯普克算法.Properties.Resources.resources
     文件         536  2014-08-31 10:48  道格拉斯普克算法\Program.cs
     目录           0  2014-08-31 10:48  道格拉斯普克算法\Properties\
     文件        1386  2014-08-31 10:48  道格拉斯普克算法\Properties\AssemblyInfo.cs
............此处省略7个文件信息

评论

共有 条评论

相关资源