3

これは、スタック オーバーフローに関する私の最初の投稿です。うまくいくことを願っています。WPF Extensions の ZoomControl を使用して、パンとズームをサポートする画像を表示しています。

<DockPanel Grid.Row="1" x:Name="canvas">            
     <Controls:ZoomControl  x:Name="zoomControl">  
        <Canvas x:Name="canvas">     
             <Image x:Name="imageControl" Stretch="None" />
        </Canvas> 
     </Controls:ZoomControl>
</DockPanel>

ユーザーがボウズ ダイアログで画像を選択すると、その画像を次のように読み込みます。

  bmp = new BitmapImage(new Uri(fileName));
  this.imageControul.Source = bmp;

いくつかの画像処理に基づいて、ユーザーがロードした画像の特定の場所 (ピクセル座標) に四角形\装飾子を追加したいと思います。

var r = new Rectangle();
 r.StrokeThickness = 5;
 r.Stroke = Brushes.Black;
 r.Fill = Brushes.Transparent;
 r.Width = width;
 r.Height = height;

 Canvas.SetLeft(r, y);
 Canvas.SetTop(r, x);

 canvas.Children.Add(r);

しかし、四角形は予想される場所に配置されていませんか? 縮尺と場所が間違っています。

ありがとう、

ジョン

4

1 に答える 1

0

問題は、キャンバスが長方形にロックされるのではなく、スペースを埋めるために拡大していることだと思います。Snoop のようなツールを見て、2 つの境界ボックスが何であるかを確認してください。

キャンバスで Horizo​​ntal と VercticalAlignment を使用して修正できる場合があります。これらを Stretch 以外に設定します。

それがうまくいかない場合は、このように再構築します

<ZoomBox>
  <Grid>
     <Image/>
     <Canvas/>
  </Grid>
</ZoomBox>

したがって、イメージとキャンバスは、変換される親グリッドによってグループ化されます。

于 2014-03-04T12:25:10.073 に答える