需要的库:svgpp(下载地址 https://github.com/andrew2015/svgpp ) boost(svgpp依赖)
工具:CMake(用来生成SVG自带案例)
1.下载svgpp,通过CMake工具,把 svgpp-master\src\CMakeLists.txt 生成解决方案(生成时需要设置输出目录和boost路径)。
生成出来后,打开 svgpp_agg_render 这个项目,在svgpp_render.cpp最下面找到主函数。

找到加载图片的地方:

其中,load接口传图片的路径(../a.svg),Imagebuffer中是需要的参数。


buffer_中存的SVG图的像素信息(它不是按RGBA存的,而是BGRA的格式),以及获取图片长宽的接口,但是它没提供获取buffer的接口,只需添加一个即可。
也就是说,svgpp提供了从svg转换到uint8数组的方法,只需要将数组转换为UTexture2D,再转换为brush即可以放到SImage中显示。
把svg转换到uint8数组的方法封装成一个动态库提供给UE4用(刚开始本来想直接把代码提供给UE4,遇到各种问题,比如:C++版本问题、各种编译不过等等,后来放弃了,编译成动态库的方式)。
3.下面简单说一下如何封装动态库:
(详细的问度娘,这里不多做介绍)
写一个类,加导出宏,再加一个函数,

函数中将主函数的东西(见本文第二张图)放入函数,并给相应的参数赋值。
4.如何在UE4中用:
将动态库,静态库,头文件放到相应的位置。

调用接口,获取到参数,然后按上图实现,即返回UTexture2D,最后一定要加AddToRoot(),不然图片过一会儿,UE4垃圾回收会自动回收掉。
扩展:可以在生成UTexture2D前,对图片进行颜色改变,Buffer都是按BGRA依次排列,可以逐像素进行操作。