• 大小: 69KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C#
  • 标签: 折线压缩  GDI+  C#  

资源简介

道格拉斯-普克,折线压缩算法的c# 可视化 实现方式,可以很直观地看到压缩效果。案例地址 https://blog.csdn.net/shijie_nihao/article/details/98905329

资源截图

代码片段和文件信息

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;

namespace 道格拉斯压缩法
{
    public partial class Form1 : Form
    {
        #region 定义所需变量
        Boolean canClick = true;
        Boolean canMove = false;
        Boolean canDouC = false;
        List pointlist = new List();
        List pointlist1 = new List();
        List pointlist2 = new List();
        Graphics g;
        Color c;
        Pen p;
        #endregion
        public Form1()
        {
            c = Color.FromArgb(25500);
            p = new Pen(c);          
            InitializeComponent();
            g = this.pictureBox1.CreateGraphics();
            compressBtn.Enabled = false;
            clearBtn.Enabled = false;
        }
        private void Form1_Load(object sender EventArgs e)
        {
            
        }
        private void pictureBox1_MouseClick(object sender MouseEventArgs e)
        {
                if(canClick==true)
                {
                    canMove = true;
                    canDouC = true;
                 p.Color = Color.FromArgb(255 0 0);  
                 pointlist.Add(new Point(e.Xe.Y));              
                 if (pointlist.Count > 1)
                     g.DrawLine(ppointlist[pointlist.Count - 2] pointlist[pointlist.Count - 1]);                  
                  g.FillEllipse(Brushes.Blue e.X - 3 e.Y - 3 6 6);  
                }
        }    
        private void pictureBox1_MouseMove(object sender MouseEventArgs e)
        {
            if (canMove == true)
            {
                this.pictureBox1.Refresh();
                for (int i = 0; i < pointlist.Count; i++)
                    g.FillEllipse(Brushes.Blue pointlist[i].X - 3 pointlist[i].Y - 3 6 6);
                for (int i = 1; i < pointlist.Count; i++)
                    g.DrawLine(p pointlist[i - 1] pointlist[i]);
                g.DrawLine(p pointlist[pointlist.Count - 1] new Point(e.X e.Y));
                g.FillEllipse(Brushes.Blue e.X - 3 e.Y - 3 6 6);
            }
        }
        private void pictureBox1_MouseDoubleClick(object sender MouseEventArgs e)
        {
            if (canDouC == true)
            {
                pointlist.Add(new Point(e.X e.Y));              
                g.FillEllipse(Brushes.Blue e.X - 3 e.Y - 3 6 6);
                canClick = false;
                canMove = false;
                canDouC = false;
                compressBtn.Enabled = true;
                clearBtn.Enabled = false;
                g.DrawLine(p new Point(0 pictureBox1.ClientRectangle.Height / 2) new Point(pictureBox1.ClientRectangle.Width pictureBox1.ClientRectangle.Height / 2));
            }
        }
        private void compress

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-08-10 10:48  道格拉斯压缩法\
     目录           0  2019-08-10 12:38  道格拉斯压缩法\道格拉斯压缩法\
     文件         187  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\App.config
     文件        5922  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\Form1.Designer.cs
     文件        7611  2019-08-10 12:38  道格拉斯压缩法\道格拉斯压缩法\Form1.cs
     文件        5817  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\Form1.resx
     文件         533  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Program.cs
     目录           0  2018-07-24 20:35  道格拉斯压缩法\道格拉斯压缩法\Properties\
     文件        1362  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Properties\AssemblyInfo.cs
     文件        2894  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Properties\Resources.Designer.cs
     文件        5612  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Properties\Resources.resx
     文件        1108  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Properties\Settings.Designer.cs
     文件         249  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\Properties\Settings.settings
     目录           0  2018-07-24 20:35  道格拉斯压缩法\道格拉斯压缩法\bin\
     目录           0  2018-07-24 20:35  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\
     文件       13824  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.exe
     文件         187  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.exe.config
     文件       40448  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.pdb
     文件       23168  2019-08-10 12:36  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.vshost.exe
     文件         187  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.vshost.exe.config
     文件         490  2013-06-18 20:28  道格拉斯压缩法\道格拉斯压缩法\bin\Debug\道格拉斯压缩法.vshost.exe.manifest
     目录           0  2018-07-24 20:35  道格拉斯压缩法\道格拉斯压缩法\obj\
     目录           0  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\
     文件         865  2019-08-10 10:50  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        7091  2019-08-10 10:48  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2019-08-10 12:39  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\TempPE\
     文件           0  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2016-09-21 19:54  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
     文件         180  2019-08-10 10:57  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\道格拉斯压缩法.Form1.resources
     文件         180  2016-09-21 20:28  道格拉斯压缩法\道格拉斯压缩法\obj\Debug\道格拉斯压缩法.Properties.Resources.resources
............此处省略9个文件信息

评论

共有 条评论

相关资源