• 大小: 74KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C#
  • 标签: 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.Windows.Forms;

namespace ClipPloygon
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
            myBitmap = new Bitmap(picShow.Width picShow.Height);//创建画布 
        }
        List mcp = new List(); // 多边形顶点列表
        List mwp = new List(); // 裁剪窗口顶点列表

        Bitmap myBitmap; //定义画布

        Point P;

        Point SP;
        Point SPR;
        Point EP;
        Point EPL;

        int Flag; //选择绘制图形类型
        bool drag;//标记鼠标是否拖拽

        Pen myPen;

        #region 绘图类别
        //绘制多边形
        private void btnDrawPolygon_Click(object sender EventArgs e)
        {
            picShow.Cursor = System.Windows.Forms.Cursors.Cross;
            Flag = 2;
            mcp.Clear();
        }
        private void btnRectant_Click(object sender EventArgs e)
        {
            picShow.Cursor = System.Windows.Forms.Cursors.Cross;
            Flag = 1;
            mwp.Clear();
        }
        #endregion

        #region 鼠标事件
        private void picShow_MouseDown(object sender MouseEventArgs e)
        {
            P.X = e.X;
            P.Y = e.Y;
            drag = true;
            picShow.Image = myBitmap;
            using (Graphics g = Graphics.FromImage(picShow.Image))
            {
                if (Flag == 1)
                {
                    SP.X = P.X;
                    SP.Y = P.Y;
                }
                else
                {                   
                    mcp.Add(P);
                    if (mcp.Count > 1)
                    {
                        g.DrawLine(Pens.Blue mcp[mcp.Count - 2] mcp[mcp.Count - 1]);
                    }
                }            
            }
            
        }
        private void picShow_MouseMove(object sender MouseEventArgs e)
        {
            if (drag)
            {
                if (Flag == 1)
                {
                    picShow.Image = (Bitmap)myBitmap.Clone();//将Graphics对象复制给Bitmap对象
                    using (Graphics g = Graphics.FromImage(picShow.Image))
                    {
                        Rectangle rect = new Rectangle(SP.X SP.Y e.X - SP.X e.Y - SP.Y);
                        g.DrawRectangle(Pens.Black rect);

                    }
                }
            }
        }

        private void picShow_MouseUp(object sender MouseEventArgs e)
        {
            drag = false;
            picShow.Image = myBitmap;
            using (Graphics g = Graphics.FromImage(picShow.Image))
            {
                if (Flag == 1)
                {
                    EP.X = e.X;
                    EP.Y = e.Y;
                    Rectangle rect = new Rectangle(SP.X 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-11-05 03:11  ClipPolygon\
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\
     文件        3618  2013-11-05 01:31  ClipPolygon\ClipLine\ClipPloygon.csproj
     文件        6267  2013-11-05 16:25  ClipPolygon\ClipLine\FrmMain.Designer.cs
     文件        9389  2013-11-07 10:08  ClipPolygon\ClipLine\FrmMain.cs
     文件        5817  2013-11-05 16:25  ClipPolygon\ClipLine\FrmMain.resx
     文件         494  2013-11-05 01:31  ClipPolygon\ClipLine\Program.cs
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\Properties\
     文件        1348  2013-11-01 16:10  ClipPolygon\ClipLine\Properties\AssemblyInfo.cs
     文件        2861  2013-11-05 01:31  ClipPolygon\ClipLine\Properties\Resources.Designer.cs
     文件        5612  2013-11-01 16:10  ClipPolygon\ClipLine\Properties\Resources.resx
     文件        1110  2013-11-05 01:31  ClipPolygon\ClipLine\Properties\Settings.Designer.cs
     文件         249  2013-11-01 16:10  ClipPolygon\ClipLine\Properties\Settings.settings
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\bin\
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\bin\Debug\
     文件       13824  2013-11-07 10:08  ClipPolygon\ClipLine\bin\Debug\ClipLine.exe
     文件       34304  2013-11-07 10:08  ClipPolygon\ClipLine\bin\Debug\ClipLine.pdb
     文件       11608  2013-12-04 22:02  ClipPolygon\ClipLine\bin\Debug\ClipLine.vshost.exe
     文件         490  2010-03-17 22:39  ClipPolygon\ClipLine\bin\Debug\ClipLine.vshost.exe.manifest
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\obj\
     目录           0  2013-11-05 03:11  ClipPolygon\ClipLine\obj\x86\
     目录           0  2013-11-05 03:24  ClipPolygon\ClipLine\obj\x86\Debug\
     文件        3949  2013-11-05 02:38  ClipPolygon\ClipLine\obj\x86\Debug\ClipLine.csproj.FileListAbsolute.txt
     文件       13824  2013-11-07 10:08  ClipPolygon\ClipLine\obj\x86\Debug\ClipLine.exe
     文件       34304  2013-11-07 10:08  ClipPolygon\ClipLine\obj\x86\Debug\ClipLine.pdb
     文件         180  2013-11-05 16:25  ClipPolygon\ClipLine\obj\x86\Debug\ClipPloygon.FrmMain.resources
     文件         180  2013-11-05 15:31  ClipPolygon\ClipLine\obj\x86\Debug\ClipPloygon.Properties.Resources.resources
     文件        3259  2013-12-04 22:04  ClipPolygon\ClipLine\obj\x86\Debug\ClipPloygon.csproj.FileListAbsolute.txt
     文件        6056  2013-11-24 16:29  ClipPolygon\ClipLine\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件       17192  2013-11-05 16:25  ClipPolygon\ClipLine\obj\x86\Debug\GenerateResource-ResGen.read.1.tlog
     文件        5230  2013-11-05 16:25  ClipPolygon\ClipLine\obj\x86\Debug\GenerateResource-ResGen.write.1.tlog
............此处省略11个文件信息

评论

共有 条评论