svg path路径转坐标点数组(直线)

svg path详解:https://blog.csdn.net/y281252548/article/details/127464369?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167930167016800180641583%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167930167016800180641583&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-127464369-null-null.142^v74^pc_search_v2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=svg%20path&spm=1018.2226.3001.4187

能力有限,只针对直线路径

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program01
    {
        static void Main(string[] args)
        {
            //string path = "M-14,205 H20 V-205 H-20 ";
            string path1 = "M10,10 H90 V90 H10 L10,10 ";
           
            string[] str = pathTransform(path1);
            Console.WriteLine(str);
        }
        public static string[] pathTransform(string path)
        {
            path = path.Remove(path.Length - 1); // 去掉最后一位的空格
            string[] result = path.Split(' ');
            List<string> list = new List<string>(); // 保存点集合
            float tempX = 0; // 上一步的X
            float tempY = 0; // 上一步的Y
            float startX = tempX;
            float startY = tempY;
            foreach (string s in result)
            {
                string pointStr = s.Substring(1, s.Length - 1); // 每一步的位置
                if (s.Substring(0, 1) == "M" || s.Substring(0, 1) == "L")
                {   
                    tempX = Convert.ToSingle(pointStr.Split(',')[0]);
                    tempY = Convert.ToSingle(pointStr.Split(',')[1]);
                } else if (s.Substring(0, 1) == "H")
                {
                    tempX = Convert.ToSingle(pointStr.Split(',')[0]);
                    StringBuilder stringBuilder = new StringBuilder(tempX.ToString());
                    stringBuilder.Append("," + tempY);
                    pointStr = stringBuilder.ToString();
                }
                else if (s.Substring(0, 1) == "V")
                {
                    tempY = Convert.ToSingle(pointStr.Split(',')[0]);
                    StringBuilder stringBuilder = new StringBuilder(tempX.ToString());
                    stringBuilder.Append("," + tempY);
                    pointStr = stringBuilder.ToString();
                }else if (s.Substring(0, 1) == "Z")
                {
                    StringBuilder stringBuilder = new StringBuilder(startX.ToString());
                    stringBuilder.Append("," + startX);
                    pointStr = stringBuilder.ToString();
                }
                list.Add(pointStr);
            }
            return list.ToArray();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值