【问题标题】:C# WPF element position not in correct placeC# WPF 元素位置不正确
【发布时间】: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() 似乎是一种解决方法。我仍然想知道为什么画布会改变它的位置。

【问题讨论】:

  • 是否可以使用网格容器代替画布?
  • 尝试设置 Horizo​​ntalAlignment 和 VerticalAlignment。 &lt;Canvas x:Name="HSVImageCanvas" HorizontalAlignment="Left" VerticalAlignment="Top"&gt;
  • @alex10 感谢您的建议!但是,它似乎没有解决它。不过,该帖子已更新为新信息。
  • @failedprogramming 感谢您的建议!我尝试将画布放入网格容器中,但没有这样的运气。不过原帖已经更新了。

标签: c# wpf emgucv


【解决方案1】:

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

道格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多