希望这很简单-但是,我找不到任何与之相关的帖子。
我正在构建带有图像的水平StackPanel,由于某种原因,其中一个图像的尺寸会不断调整,从而导致图像周围出现非常不需要的边框。我可以做些什么才能将输出强制为图像的原始像素大小,或者我可以禁用某些允许该StackPanel稍微调整图像大小的东西?
如果仔细观察,您会发现在标题文本结尾的图像周围正出现透明边框。我不知道为什么会这样。这是图片的代码:
Image titleRightCap = new Image();
titleRightCap.Source = new BitmapImage(new Uri("pack://application:,,,/skins/default/top_r_title_cap.png", UriKind.Absolute));
borderTop.Children.Add(titleRightCap);
titleRightCap.Loaded += delegate (object s, RoutedEventArgs e)
{
headWidth += titleRightCap.ActualWidth;
};
这是实时输出,您可以在其中看到大小差异:
如果可以强制将大小保持不变,我认为应该可以解决此问题,但是我不确定该怎么做。
答案 0 :(得分:0)
所以,我不确定为什么为什么。但是,这似乎与某种内部数学计算有关。
此项是一个“顶部”边框控件,该控件是动态生成的,并在Windows更改大小时扩展。为了动态扩展,有一个带有图像画笔的网格元素,它仅绘制要填充的边框背景。但是,这需要边框控件中所有其他元素的宽度才能正确计算。
Title元素是动态生成的标签,其大小与文本大小相同。不幸的是,这可以是任何宽度的两倍,并且会使数学难以满足于填充拉伸的动态网格。
StackPanel以任何方式解释这些大小更改,都是出于某种原因更改了此Image的大小,以补偿宽度以精确达到100%宽度。
因此,要解决此问题,我采取了动态生成的“标题”标签的Width值并将其四舍五入到下一个最接近的整数:
titleTextGraphic.Width = Math.Ceiling(titleTextGraphic.ActualWidth);
现在,标记为动态缩放宽度的元素应该更改。运行后,我的边界现在不再有空隙。
因此,目前看来,它工作正常。我感谢您提供的帮助,希望对其他遇到类似问题的人有所帮助。