【发布时间】:2016-07-01 03:13:21
【问题描述】:
我正在使用 WPF 和 EmguCV 3.0 开发视觉处理应用程序。我的问题是元素在屏幕上的位置不正确。我已经查看了填充是什么,它将所有边都返回为 0。Emgu 中的 ImageBox 元素(我用来显示图像)被封装在 Windows 窗体主机控件中。我有两个其他 ImageBox 元素,它们显示正确。每个 ImageBox 元素都位于 TabControl 中它们自己的选项卡中。在启动时,我设置了所有 ImageBox 及其画布的宽度和高度属性。
另外需要注意的是,其他两个 ImageBox 也溢出了它们的边界,但在选项卡之间来回切换后被重置回边界。这只会发生一次。
这里是 UI 外观截图的链接。 http://imgur.com/a/RwG17
此外,这里是 ImageBoxes 的 XAML 和 C# 代码。
<TabItem x:Name="ImageTabControlHSV">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="HSV" />
</StackPanel>
</TabItem.Header>
<Canvas x:Name="HSVImageCanvas">
<WindowsFormsHost>
<emui:ImageBox x:Name="HSVImageBox"/>
</WindowsFormsHost>
</Canvas>
</TabItem>
//Width and height properties are gotten from camera image.
HSVImageBox.Width = ratioWidth;
HSVImageBox.Height = ratioHeight;
HSVImageCanvas.Width = width;
HSVImageCanvas.Height = height;
HSVImageCanvas.MaxHeight = height;
HSVImageCanvas.MaxWidth = width;
任何帮助或建议将不胜感激。
更新: 设置有问题的 ImageBox 被选中的次数并使用 Canvas.SetTop() 和 Canvas.SetLeft() 似乎是一种解决方法。我仍然想知道为什么画布会改变它的位置。
【问题讨论】:
-
是否可以使用网格容器代替画布?
-
尝试设置 HorizontalAlignment 和 VerticalAlignment。
<Canvas x:Name="HSVImageCanvas" HorizontalAlignment="Left" VerticalAlignment="Top"> -
@alex10 感谢您的建议!但是,它似乎没有解决它。不过,该帖子已更新为新信息。
-
@failedprogramming 感谢您的建议!我尝试将画布放入网格容器中,但没有这样的运气。不过原帖已经更新了。