2009-09-22 12 views
8

私はDrawingImageリソースに変換したいと思ういくつかのパスを定義しましたが、何か不足しているはずです。Path in a DrawingImageの使い方は?

すなわち

私はこのような何か撮りたい:

<Path Stroke="DarkGoldenRod" StrokeThickness="3" 
     Data="M 100,200 C 100,25 400,350 400,175 H 280" /> 

をし、このようなもので、それを使用します。

<DrawingImage x:Key='icon'> 
    <DrawingImage.Drawing> 
     <DrawingGroup> 
     <DrawingGroup.Children> 
      <GeometryDrawing ... /> 
      . . . 
     </DrawingGroup.Children> 
     </DrawingGroup> 
    </DrawingImage.Drawing> 
</DrawingImage> 

任意の提案ですか?

-dk

+0

InkscapeからエクスポートされたXPSファイルのデータを使用して、同じ種類の問題が発生します。 – jpierson

+0

これを行う方法は2つあります。 –

+0

Expression Designを使用して、 'DrawingBrush'esでResourceDictionaryをエクスポートし、名前を' DrawingImage'sに変更します。 – marbel82

答えて

6

を私は非常にあなたが何をしたいのか分からない...トーマスの答えにあなたのコメント与えられました。

しかし、式デザインは、二つの異なるWPFの方法でエクスポートできます

  1. アートワークは、DrawingBrush(ES)に変わり、またはアートワークをパスに変身キャンバス(Sに
  2. のResourceDictionaryに)と形状。

ResourceDictionary/DrawingBrushのアプローチは、あなたが質問に与えた示唆された答えに非常によく似ており、トーマスは答えました。

私は、Expression Designでアートワークをデザインし、.designファイルを保持して、希望するフォーマットにエクスポートできるようにすることをお勧めします。特に後の時点で。

今、私はAdobe Illustratorで多くのアートワークが完成し、Expression Designを使用して変換されていることを知っています。その場合、.aiファイルと.designファイルの両方を保持して、アートワークを変更して再度エクスポートできるようにします。

これは、xamlをExpression Designにインポートできない(つまり、ラウンドトリップシナリオをサポートしない)という問題を回避するためです。

Path.Dataプロパティからミニパス言語をGeometryDrawing.Geometryプロパティにコピーするのと同じくらい簡単ではない場合があります。シナリオのサイズ変更(DrawingBrush( es)は、通常はどこかのFillに設定され、通常、そこにあるスペースをすべて埋める)。だから、それに気をつけろ!

6

これは動作するはずです:

<DrawingImage x:Key='icon'> 
    <DrawingImage.Drawing> 
    <DrawingGroup> 
     <DrawingGroup.Children> 
     <GeometryDrawing Geometry="M 100,200 C 100,25 400,350 400,175 H 280"> 
      <GeometryDrawing.Pen> 
      <Pen Thickness="3" Brush="DarkGoldenRod"/> 
      </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     </DrawingGroup.Children> 
    </DrawingGroup> 
    </DrawingImage.Drawing> 
</DrawingImage> 
+0

パスをジオメトリに相当するものに手動で変換するのではなく、これの理由は、Blendで作成されたいくつかのxamlアートがあり、xamlパスを使ってパスを描画するからです。あなたがエクスポートしない限り、Expression Designが同じ短いPath構文を使用していることに気付きました。そして、あなたの例のように構文を使用します。 –

+0

XAMLでDrawingImageに入れたい場合、別の方法があるとは思いません...おそらくコードビハインドで行うことができます。 –

+0

これは私がやる方法です。私はここにいくつかの情報が欠けていると思う。 – cplotts