WPF缩放控件和装饰器

3

这是我在stackoverflow上的第一篇文章,希望能做得好。我正在使用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>

当用户使用浏览对话框选择一个图像后,我会这样加载该图像:
  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);

然而,矩形并没有放置在预期的位置上?比例和位置错误。

谢谢,

约翰


"特定位置"指的是矩形的哪个部分?矩形是否应该只是整个图像的边框? - Ketobomb
1个回答

0

我认为问题可能是你的画布正在扩展以填充空间,而不是锁定到矩形。使用像Snoop这样的工具查看两者的边界框。

你可以通过在画布上设置Horizontal和VercticalAlignment来修复它,将它们设置为除Stretch之外的任何值。

如果这样做不起作用,请按以下方式重新构建它

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接