C#WPF元素位置不正确

时间:2016-07-01 03:13:21

标签: c# wpf emgucv

我正在使用WPF和EmguCV 3.0开发视觉处理应用程序。我的问题是元素在屏幕上没有正确定位。我已经查看了填充是什么,它将所有边都返回为0.来自Emgu的ImageBox元素,我用来显示图像,封装在Windows窗体控件中。我有两个其他ImageBox元素,可以正常显示。每个ImageBox元素都在TabControl中的自己的选项卡中。在启动时,我设置了所有ImageBox及其画布的宽度和高度属性。

另外需要注意的是,另外两个ImageBox也会溢出边界,但在选项卡之间来回切换后会重置回边界。这只发生一次。

这是一个UI截图的链接。 http://imgur.com/a/RwG17

此外,这里是ImageBox的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;

非常感谢任何帮助或建议。

更新:使用Canvas.SetTop()和Canvas.SetLeft()来计算有问题的ImageBox被选中的次数似乎是一种解决方法。我仍然想知道画布为什么会改变它的位置。

1 个答案:

答案 0 :(得分:0)

您可以尝试执行Canvas.SetTop(HSVImageCanvas,HSVImageCanvas.Top)和Canvas.SetLeft(HSVImageCanvas,HSVImageCanvas.Left)。

道格