【发布时间】:2010-10-02 20:48:49
【问题描述】:
有没有什么库
- 允许将 svg 直接绘制到 Windows 窗体应用程序
- 到 WPF 应用程序
我用Inkscape 绘制图形和设计一切,因为我喜欢那个程序。 然后我有那些令人惊叹的 svg,必须将它们导出为 png(WinForm)以使用它们或将它们转换为 xaml 代码(WPF)(Kaxaml 帮助我)。
有没有办法直接使用我的 svgs?
【问题讨论】:
有没有什么库
我用Inkscape 绘制图形和设计一切,因为我喜欢那个程序。 然后我有那些令人惊叹的 svg,必须将它们导出为 png(WinForm)以使用它们或将它们转换为 xaml 代码(WPF)(Kaxaml 帮助我)。
有没有办法直接使用我的 svgs?
【问题讨论】:
如果您想将它们直接加载到 WPF 中, 我得到了更好的结果:https://github.com/ElinamLLC/SharpVectors
【讨论】:
是的,您可以使用 AB4D 的 ReaderSVG 直接从 XAML 获取 WPF。
关于 WinForms,删除了之前指向 Kent Boogart 示例的链接,因为它在 2019 年的某个时候被删除。
从this dotnetways post复制以下内容
要将 WPF 控件或 WPF 用户控件(在此示例中为 wpfControl)托管到 Windows 窗体应用程序中,请创建 ElementHost 类的实例并将您的 WPF 控件/用户控件作为子项添加到 ElementHost 的实例中。
using System.Windows.Forms.Integration;
//Assembly: WindowsFormsIntegration (in WindowsFormsIntegration.dll)
//...
ElementHost elementHost = new ElementHost();
elementHost.Dock = DockStyle.None;
elementHost.Child = wpfControl;
现在,将 ElementHost 的实例添加到 Windows 窗体中的容器控件(例如此处的 containerPanel)
containerPanel.Controls.Add(elementHost);
【讨论】:
我个人讨厌微软的产品/开发工具中没有对 SVG 的原生支持。我发现了两个相当完整但仍然不成熟的 SVG 库,它们在撰写本文时似乎很活跃,但肯定需要贡献者。
IIRC 两个库都输出一个可以通过 Image 类直接使用的绘图对象;你会明白的,它们都非常易于使用。
【讨论】:
哇,我just read Inkscape 支持保存为 XAML。直到现在我还没有意识到这一点羞耻。
但这仍然不能解决我的 WinForms 问题...
【讨论】: