none
PathのDataを直接書くのではなくsvgファイルから読み込む方法 RRS feed

  • 質問

  • <Path x:Name="CheckMark" Stroke="SteelBlue" IsHitTestVisible="False" SnapsToDevicePixels="False" Data="M22 18.055v2.458c0 1.925-4.655 3.487-10 3.487-5.344 0-10-1.562-10-3.487v-2.458c2.418 1.738 7.005 2.256 10 2.256 3.006 0 7.588-.523 10-2.256zm-10-3.409c-3.006 0-7.588-.523-10-2.256v2.434c0 1.926 4.656 3.487 10 3.487 5.345 0 10-1.562 10-3.487v-2.434c-2.418 1.738-7.005 2.256-10 2.256zm0-14.646c-5.344 0-10 1.562-10 3.488s4.656 3.487 10 3.487c5.345 0 10-1.562 10-3.487 0-1.926-4.655-3.488-10-3.488zm0 8.975c-3.006 0-7.588-.523-10-2.256v2.44c0 1.926 4.656 3.487 10 3.487 5.345 0 10-1.562 10-3.487v-2.44c-2.418 1.738-7.005 2.256-10 2.256z" />

    このPath.DataをファイルからResourceとして読み込むようにしたいのです。

    イメージとしては以下のようなResourceを定義できるといい感じです。もちろんそんな書き方は出来ませんが良い方法はありませんか?

    <Window.Resource>
    <Path x:Key="Key1" Stroke="SteelBlue" IsHitTestVisible="False" SnapsToDevicePixels="False" Data="{File svg/アイコン.svg}" />
    </window.Resource>


    2020年6月10日 10:14

すべての返信

  • // M22 18.055v2.458c0 ... とSVGではだいぶ開きがあるように思いますが。

    コンテンツファイルまたはリソースファイルからパスマークアップ文字列を読み込んでDataに設定する、であれば、以下のようにできます。

    1. Application.GetContentStreamまたはApplication.GetResourceStreamでファイルパス文字列からストリームを取得
    2. ストリームから目的のパスマークアップ文字列を取得
    3. GeometryConverter::ConvertFromStringでGeometryに変換

    なので、MarkupExtension派生クラスを用意して上記処理を行えばいいでしょう。

    • 編集済み Hongliang 2020年6月11日 10:13
    2020年6月11日 10:05
  • 和和和さん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    WPFはsvgファイルをサポートしていませんが、NuGetにSharpVectorを追加してsvgファイルを保持できます。

    下記のステップをご参照いただければと思います。

    1.プロジェクトを右クリック> NuGetパッケージマネージャーを選択> SharpVectorsを検索してインストールします。
    2.ウィンドウラベルの下に
    xmlns:svgc=http://sharpvectors.codeplex.com/svgc/
    を追加します。
    3.次のように使用します:
    <svgc:SvgViewbox IsHitTestVisible="False"  Source="pack://application:,,,/1.svg"/>
    4. プロパティでsvgファイルのビルドアクションをリソースに変更し、プロジェクトをクリーンアップして再ビルドします。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2020年6月19日 7:28
    モデレータ