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

我预计问题在于您的 Canvas 正在扩展以填充空间,而不是被锁定到矩形。用 Snoop 之类的工具看看,看看两者的边界框是什么。

您可以使用画布上的 Horizo​​ntal 和 VercticalAlignment 来修复它,将它们设置为 Stretch 以外的任何值。

如果这不起作用,请像这样重组它

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

因此,图像和画布由正在转换的父 Grid 分组。

于 2014-03-04T12:25:10.073 回答