[英]Unwanted Spacing / Image Resizing in C# WPF StackPanel
希望这篇文章很简单-但是,我找不到任何相关的文章。
我正在构建带有图像的水平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;
};
这是实时输出,您可以在其中看到大小差异:
我觉得如果我可以强制大小保持不变,就应该解决此问题,但是我不确定该怎么做。
因此,我不确定为什么会这样。 但是,这似乎与某种内部数学计算有关。
此项是一个“顶部”边框控件,该控件是动态生成的,并在窗口更改大小时扩展。 为了动态扩展,有一个带有图像画笔的网格元素,它仅绘制要填充的边框背景。 但是,这需要边框控件中所有其他元素的宽度才能正确计算。
Title元素是一个动态生成的标签,其大小与文本大小相同。 不幸的是,这可以是任何宽度的两倍,并且使数学难以满足于填充拉伸的动态网格。
无论哪种方式,StackPanel都会解释这些大小更改,这是由于某种原因而更改了此Image的大小以补偿宽度以精确达到100%宽度。
因此,解决此问题的方法是采用动态生成的“标题”标签的“宽度”值,并将该值四舍五入到下一个最接近的整数:
titleTextGraphic.Width = Math.Ceiling(titleTextGraphic.ActualWidth);
现在,标有动态缩放宽度的元素应该更改。 运行后,我的边界现在不再有空隙。
因此,这似乎目前工作正常。 我感谢您提供的帮助,希望对其他遇到类似问题的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.