InkCanvasのストロークコレクションをsvgイメージに保存することはできますか?私が見つけることができるのは、ISF(Ink Serialized Format)が埋め込まれたGIFとしてストロークを保存することも、ビットマップとしてレンダーすることもできます。ストロークを他のプラットフォーム(Webなど)と相互運用可能なベクター形式で保存したいWpf InkCanvasはstvをsvgとして保存します
答えて
私はそれを理解しました。ここで
は- 反復
StrokeCollection
- 以上の手順
GetGeometry
関数を呼び出した後、GetOutlinedPathGeometry
を呼び出すことにより、各Stroke
のPathGeometry
を取得しています。 Figures
をGeometry
から取得します。私はPathGeometry
をXAMLに保存し、次にFigures
属性をXElement.Parse
で解析することでそれを行っています。- 次に、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).GetOutlinedPathGeometry();
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
});
}
}
}
非常に便利です! 私は、次の 'foreach'ループの最初の行を変更することをお勧め: ' VARジオメトリ= stroke.GetGeometry(stroke.DrawingAttributes).GetOutlinedPathGeometry(); ' これは、ストロークがで作成されている場合ことを保証します異なるツール/属性は、それらは保存されます。たとえば、誰かがラウンドの代わりに正方形のペン先を使用するとします。 EDIT:これを反映するように回答を編集しました。 –
@DaxPandhiあなたは編集を試しましたか?ちょうどそれがあなたの編集で動作することを確認する。もしそうなら、確認してください。私は編集内容を承認します。ありがとう – Mayank
はい、私は正常に自分のアプリケーションで変更されたコードを使用し、うまく動作します。最初にペーストした元のコードを試しましたが、それが機能している間は、別のペン先の形状は保存されませんでした。変更後、私は形状を保存することができました。 –
- 1. SVGイメージをSVGイメージとして保存する方法
- 2. Google ChartをSVGとして保存しますか?
- 3. WPFダイアログとして保存...ビューに?
- 4. wpfビューをイメージとして保存します。好ましくは.png
- 5. キャンバスをサーバ上にsvgとjsonとして保存する
- 6. InkCanvasをファイルにバイト配列に保存すると画像が変形する
- 7. WPF svgリソースをコンボボックスイメージとしてロード
- 8. WPF Inkcanvas描画と回転図形
- 9. Grails - JPGイメージとしてプロジェクトパブリックフォルダにsvgイメージを保存
- 10. WPF - InkCanvasタッチスクリーンの問題
- 11. WPFにラジオボタンのコンテンツを保存してから、イベントハンドラを介して保存コンテンツを送信しますか?
- 12. svgコードを.svgイメージとして保存するにはどうすればよいですか?
- 13. SaveFileDialog(UWP)を使わずにInkCanvasストロークを保存する
- 14. WPF GridViewを編集してデータベースに保存する方法は?
- 15. InkCanvasのコンテンツをリストに保存する方法
- 16. svgイメージを迅速に保存して取得する方法。
- 17. は、私がここで説明されているカスタムInkCanvasと複数のカスタムストロークを、実装しましたInkCanvas
- 18. SVG背景イメージをDBに保存しますか?
- 19. WPF保存コントロールステート
- 20. InkCanvasはUWP
- 21. numpy.ndarrayをイメージとして保存し、ピクセル値を保存します。
- 22. svgコンテナを.svgファイルとして保存するためのツールキットが一切ない方法ですか?
- 23. ネイティブファイルを開く/保存ダイアログ(WindowsフォームまたはWPFなし)
- 24. ggplot2オブジェクトをggplotlyとして保存し、Linuxのディスクに保存します
- 25. WPFを使用してデータベースにデータを保存する
- 26. InkCanvas保存で間違った寸法が生成される
- 27. InkCanvas、WPFで "Delete"キーボードイベントを捕捉するには?
- 28. C#WPFアプリケーションUserControlの設定を保存します。
- 29. WPFアプリケーションでファイルを保存します。 C#
- 30. PhantomJSでSVGを保存する
どのように質問が広すぎるのかわからないのですか?私は非常に具体的な質問をしています。犯罪はないが、広すぎるため閉鎖されたと投票した人は、質問を読み返すべきである。 – Mayank
GIFとして保存する方法を追加することがあります。それから、svgを求めるのはあまり広すぎないでしょう。 – rene