WPF ZoomControl和装饰器

WPF ZoomControl和装饰器,wpf,image,coordinates,zooming,Wpf,Image,Coordinates,Zooming,这是我关于堆栈溢出的第一篇文章,我希望我做对了。我正在使用WPF扩展的ZoomControl来显示支持平移和缩放的图像: <DockPanel Grid.Row="1" x:Name="canvas"> <Controls:ZoomControl x:Name="zoomControl"> <Canvas x:Name="canvas"> <Image x:Nam

这是我关于堆栈溢出的第一篇文章,我希望我做对了。我正在使用WPF扩展的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>
我想在用户基于某些图像处理加载的图像上的特定位置(像素坐标)添加矩形\装饰器

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);
但是,矩形是否未放置在预期位置?错误的比例和位置

谢谢


John

我认为问题在于画布正在扩展以填充空间,而不是锁定在矩形上。使用Snoop之类的工具查看一下,看看这两个工具的边界框是什么

您可以在画布上使用水平和垂直对齐来修复它,将它们设置为除“拉伸”之外的任何其他设置

如果这不起作用,就这样重组

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

因此,图像和画布按正在变换的父网格分组。

矩形的“特定位置”是什么?矩形应该只是整个图像的边框吗?
<ZoomBox>
  <Grid>
     <Image/>
     <Canvas/>
  </Grid>
</ZoomBox>