2012-02-13 6 views
0

これは簡単なようですが、私のためには機能しません。私は自分のDBから画像を表示し、同じ座標系を使って同じDBからポリゴンをオーバーレイしたいと思います。オーバーレイされたポリゴンでイメージを表示する

<Image Name="imgColl" Stretch="Fill" MaxWidth="190" MinHeight="70"> 
    <Image.Source> 
     <DrawingImage> 
      <DrawingImage.Drawing> 
       <DrawingGroup> 
        <ImageDrawing ImageSource="{Binding ImageData}" Rect="0,0,590,590"/> 
        <GeometryDrawing Geometry="{Binding Coordinates, StringFormat=M\{0\}}"> 
         <GeometryDrawing.Pen> 
          <Pen Thickness="4" LineJoin="Bevel" Brush="OrangeRed"/> 
         </GeometryDrawing.Pen> 
        </GeometryDrawing> 
       </DrawingGroup> 
      </DrawingImage.Drawing> 
     </DrawingImage> 
    </Image.Source> 
</Image> 

ImageDrawingオブジェクトにRectを指定する必要があることがわかりました。これは、私が読み込んでいる画像のサイズが異なるため、残念です。しかし、Rectを指定しないと、アプリケーションを実行するときに画像が表示されません。画像を大きくすると(例のように)、画像が表示され、コントロールに合わせてサイズが変更されますが、ポリゴンの座標系は一致していないようです。

また、私はStringFormatを使用してMをジオメトリ仕様の前に配置しました。このように、 "M50,50,12,50,30,30,30,100,100,100"となります。明示的に指定するとポリゴンが表示されますが、同じ文字列でバインドするとポリゴンは表示されません。

これらの2つの問題が互いに関連しているかどうかはわかりません。どちらか一方の問題が修正されたら再評価する必要があります。あなたが提供する必要がある任意のガイダンスをありがとう!

+0

あなたは私の英語を限界までテストしたことを認めなければなりません:o)あなたが得ているものと望むものが見えるところにいくつかの画像を付けることができますか? – NestorArturo

答えて

2

バインディングのターゲットタイプは文字列ではなく、Geometryであるため、StringFormatバインディングの設定はここでは無視されます。

Coordinatesプロパティによって返された文字列は、ジオメトリに[TypeConverterAttribute(typeof(GeometryConverter))]属性設定があるため、暗黙的にジオメトリに変換されますが、StringFormatは適用されません。バインディングConverterを追加する必要があります。

ImageDrawing.Rectに関するその他の問題について:私がImageDrawingを理解している限り、描画矩形を常に指定する必要があります。デフォルトではRect.Emptyです。おそらく、Rectプロパティをデータオブジェクトのいくつかのプロパティにバインドすることもできます。

とにかく、イメージとポリゴンの共通の座標系を維持するために、このようなものを定義する方がずっと簡単でしょうか?

<Viewbox MaxWidth="190" MinHeight="70"> 
    <Canvas> 
     <Image Stretch="None" Source="{Binding ImageData}" /> 
     <Path Stroke="OrangeRed" StrokeThickness="4" StrokeLineJoin="Bevel" 
       Data="{Binding Coordinates}" /> 
    </Canvas> 
</Viewbox> 
+0

ああ!それは素晴らしいことを知っている、ありがとう!私はコンバータを試してみます... – Jarvis

+0

[GeometryConverter](http://msdn.microsoft.com/en-us/library/system)を利用して、IValueConverterを座標列からジオメトリに直接変換する必要があります。 windows.media.geometryconverter.aspx)クラス。 – Clemens

+0

を試していますが、1つの子のみしかサポートしていないため、タグ内にイメージとパスの両方を入れることはできません。 – Jarvis

関連する問題