c# WPF元素位置不正确
本文关键字:不正确 位置 元素 WPF | 更新日期: 2023-09-27 17:53:33
我正在使用WPF和EmguCV 3.0开发一个视觉处理应用程序。我的问题是元素在屏幕上的位置不正确。我已经查看了填充是什么,它返回所有边为0。来自Emgu的ImageBox元素(我使用它来显示图像)被封装在Windows Forms Host控件中。我还有另外两个正确显示的ImageBox元素。每个ImageBox元素在TabControl中都有自己的选项卡。在启动时,我设置了所有imagebox和它们的画布的宽度和高度属性。
另外需要注意的是,另外两个imagebox也溢出了它们的边界,但在标签之间来回切换后,它们会被重置回边界。这只发生一次。
这是一个链接到屏幕截图的UI看起来像什么。https://i.stack.imgur.com/1RMX0.jpg
另外,这里是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;
如有任何帮助或建议,我将不胜感激。
UPDATE:设置一个计数器,显示有问题的ImageBox被选中的次数,并使用Canvas.SetTop()和Canvas.SetLeft()似乎是一个解决方案。我还是想知道为什么画布会改变它的位置
您可以尝试执行画布。SetTop(hsvimageccanvas, hsvimageccanvas . top)和Canvas。SetLeft (HSVImageCanvas HSVImageCanvas.Left)。
Doug