这是我关于堆栈溢出的第一篇文章,我希望我做对了。我正在使用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>
当用户选择带有bowse对话框的图像时,我会加载该图像:
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);
但是,矩形没有放在预期的位置?错误的规模和位置。
谢谢,
约翰
答案 0 :(得分:0)
我预计问题是你的Canvas正在扩展以填充空间而不是被锁定到矩形。看看像Snoop这样的工具,看看两者的边界框是什么。
您可以在画布上使用Horizontal和VercticalAlignment对其进行修复,将它们设置为Stretch以外的任何其他对象。
如果这不起作用,就像这样重组
<ZoomBox>
<Grid>
<Image/>
<Canvas/>
</Grid>
</ZoomBox>
因此,图像和画布按正在转换的父网格进行分组。