C#多边形相交、合并等操作

最近在做项目时遇到需要对二维的多边形进行相交及合并的操作,自己也写了很多方法,但是效果都不是很理想,最终决定使用GPC库,此库中有很多复杂的多边形裁剪方法,现对此库的使用方法做简单描述,源码在文末贴出。
GPC库的官方网站:http://www.cs.man.ac.uk/~toby/gpc/

调用方法思路:
  • 将GPC库封装到为C#控制台应用程序
  • 项目中调用此控制台应用程序
  • 与控制台应用程序通信获取结果
  • 将结果按照格式进行转换
代码如下:

此段代码为调用封装好的控制台程序,参数格式为:“1,1;2,2;3,3;4,4”(多边形顶点坐标,以分号隔开)

string strConsoleRoot = System.Environment.CurrentDirectory + "\\GpcLib";//文件夹
string strConsolePath = Path.Combine(strConsoleRoot, "PolygonOperate.exe");//exe路径
string strFingerTemplate1 = "\"" + ConvertPointToString(polyon1) + "\"";//参数1
string strFingerTemplate2 = "\"" + ConvertPointToString(polyon2) + "\"";//参数2
string strFingerTemplate3 = "\"" + type.ToString() + "\"";				//参数3
ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = strFingerTemplate1 + " " + strFingerTemplate2 + " " + strFingerTemplate3;
start.WorkingDirectory = strConsoleRoot;
start.FileName = strConsolePath;
start.UseShellExecute = false;
start.RedirectStandardInput = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
start.CreateNoWindow = true;
_process = Process.Start(start);
_process.OutputDataReceived += (sender, e) =>
{
    if (!string.IsNullOrEmpty(e.Data))
    {
        //调用成功e.Data
        //返回值与参数格式相同,需要将其转换为需要的格式
    }
    else
    {
        //调用异常处理
    }
    _process.CancelOutputRead();
    _process.Close();
    _process.Dispose();
};
_process.BeginOutputReadLine();
//Thread.Sleep(1200);

封装的控制台程序地址:https://gitee.com/liujun155/PolygonOperate

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值