gpt4 book ai didi

c# - Wpf InkCanvas 将笔画保存为 svg

转载 作者:行者123 更新时间:2023-11-30 21:46:22 25 4
gpt4 key购买 nike

是否可以将 InkCanvas 笔划集合保存为 svg 图像?我唯一能找到的是我可以将笔画保存为带有嵌入式 ISF(墨水序列化格式)的 GIF,或者将它们渲染为位图。我想以可以与其他平台(如网络)互操作的矢量格式保存笔画。

最佳答案

我想通了。

步骤如下

  1. 遍历 StrokeCollection
  2. 通过调用 GetGeometry 函数然后调用 GetOutlinedPathGeometry 获取每个 StrokePathGeometry
  3. 几何中获取图形。我是通过将 PathGeometry 保存到 XAML,然后通过 XElement.Parse 解析 Figures 属性来实现的。
  4. 然后我可以创建一个 svg 文档并添加每个路径(见下面的代码)。

我正在使用 SVG Rendering Library创建 SVG 文档。

var svg = new SvgDocument();
var colorServer = new SvgColourServer(System.Drawing.Color.Black);

var group = new SvgGroup {Fill = colorServer, Stroke = colorServer};
svg.Children.Add(group);

foreach (var stroke in InkCanvas.Strokes)
{
var geometry = stroke.GetGeometry(stroke.DrawingAttributes).GetOutlinedPath‌​Geometry();

var s = XamlWriter.Save(geometry);

if (s.IsNotNullOrEmpty())
{
var element = XElement.Parse(s);

var data = element.Attribute("Figures")?.Value;

if (data.IsNotNullOrEmpty())
{
group.Children.Add(new SvgPath
{
PathData = SvgPathBuilder.Parse(data),
Fill = colorServer,
Stroke = colorServer
});
}
}
}

关于c# - Wpf InkCanvas 将笔画保存为 svg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com