前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#操作SVG矢量图-nuget库svg

C#操作SVG矢量图-nuget库svg

作者头像
唔仄lo咚锵
发布2022-05-10 10:22:39
2.3K0
发布2022-05-10 10:22:39
举报
文章被收录于专栏:blog(为什么会重名,真的醉了)

文章目录

NuGet

  • 新建C#应用
在这里插入图片描述
在这里插入图片描述
  • 配置包源 工具->NuGet包管理器->程序包管理器设置
在这里插入图片描述
在这里插入图片描述

新建包源https://www.nuget.org/api/v2/

在这里插入图片描述
在这里插入图片描述
  • 安装svg
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

  • 测试数据 博客不支持SVG格式,只能放入网盘,下载后放在D盘目录下。 (使用其他svg图并修改路径名也可)
在这里插入图片描述
在这里插入图片描述

链接:https://pan.baidu.com/s/1xDYBb9IlmTdvuO6YBdNGhw 提取码:nxm0

  • 测试代码
代码语言:javascript
复制
using Svg;
using System;
using System.Drawing;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //绘制文本
            SvgDocument svgDocument = new SvgDocument();
            Svg.SvgText text = new Svg.SvgText();
            text.Text = "测试";
            text.FontSize = 20;
            text.Transforms = new Svg.Transforms.SvgTransformCollection();
            text.Transforms.Add(new Svg.Transforms.SvgTranslate(100, 100));//位置
            text.Transforms.Add(new Svg.Transforms.SvgRotate(45));//旋转45度
            text.Transforms.Add(new Svg.Transforms.SvgScale(2));//规模
            text.Fill = new SvgColourServer(Color.Lime);//颜色
            svgDocument.Children.Add(text);
            svgDocument.Write(@"D:\test.svg");//保存

            //重叠两个svg
            SvgDocument svgDocument2 = new SvgDocument();
            SvgDocument child1 = SvgDocument.Open(@"D:\demo1.svg");//读取
            SvgDocument child2 = SvgDocument.Open(@"D:\demo2.svg");
            svgDocument2.Children.Add(child1);
            svgDocument2.Children.Add(child2);
            svgDocument2.Write(@"D:\test2.svg");
            
            //绘制四象限中心对称
            SvgDocument svgDocument3 = new SvgDocument();
            SvgDocument c1 = SvgDocument.Open(@"D:\demo3.svg");
            c1.Transforms = new Svg.Transforms.SvgTransformCollection();
            c1.Transforms.Add(new Svg.Transforms.SvgRotate(90));
            c1.Transforms.Add(new Svg.Transforms.SvgTranslate(0, c1.Height));
            c1.Transforms.Add(new Svg.Transforms.SvgSkew(5, 5));//倾斜
            setColor(c1, new SvgColourServer(Color.SlateGray));
            SvgDocument c2 = SvgDocument.Open(@"D:\demo3.svg");
            c2.Transforms = new Svg.Transforms.SvgTransformCollection();
            c2.Transforms.Add(new Svg.Transforms.SvgTranslate(-c2.Width*3, 0));
            c2.Transforms.Add(new Svg.Transforms.SvgSkew(5, 5));
            setColor(c2, new SvgColourServer(Color.SlateGray));
            SvgDocument c3 = SvgDocument.Open(@"D:\demo3.svg");
            c3.Transforms = new Svg.Transforms.SvgTransformCollection();
            c3.Transforms.Add(new Svg.Transforms.SvgRotate(90));
            c3.Transforms.Add(new Svg.Transforms.SvgTranslate(c3.Width, c3.Height*2));
            c3.Transforms.Add(new Svg.Transforms.SvgSkew(5, 5));
            setColor(c3, new SvgColourServer(Color.SlateGray));
            SvgDocument c4 = SvgDocument.Open(@"D:\demo3.svg");
            c4.Transforms = new Svg.Transforms.SvgTransformCollection();
            c4.Transforms.Add(new Svg.Transforms.SvgTranslate(-c4.Width*2,c4.Height));
            c4.Transforms.Add(new Svg.Transforms.SvgSkew(5, 5));
            setColor(c4, new SvgColourServer(Color.SlateGray));
            svgDocument3.Children.Add(c1);
            svgDocument3.Children.Add(c2);
            svgDocument3.Children.Add(c3);
            svgDocument3.Children.Add(c4);
            svgDocument3.Write(@"D:\test3.svg");
        }

        //递归修改颜色
        private static void setColor(SvgElement element, SvgColourServer svgColourServer)
        {
            element.Fill = svgColourServer;
            foreach(SvgElement item in element.Children)
            {
                setColor(item, svgColourServer);
            }
        }
    }
}

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

  • 测试结果

name

svg

demo1.svg

demo2.svg

demo3.svg

test.svg

test2.svg

test3.svg

在这里插入图片描述
在这里插入图片描述

文档

http://svg-net.github.io/SVG/api/Svg.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • NuGet
  • 测试
  • 文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档