题
如何确定画布(具有一定宽度)的宽度(以像素为单位)?
我在 AnimatedImage 控件中有一个位图,并且我知道该位图的宽度(以像素为单位),并且我想缩放该位图,使其水平完全适合画布。我如何确定这个比例?
笔记:我不需要使用 RenderTargetBitmap,因为位图已经加载。
解决方案
在 WPF 中,单位是独立于设备的。计算单位实际像素大小的公式为:
每个 WPF 单位的像素 = ConstantWPFUnit 大小 * 显示器 DPI;
元素的大小(以像素为单位) = 每个 WPF 单位的像素 * MyElement.ActualWidth
恒定的 WPF 单元大小为 1/96。如果我没记错的话,监视器 DPI 可以作为从 SystemInformation.GetPrimaryMonitor 或类似内容返回的类中的属性找到。
FrameworkElement 的 ActualWidth 采用与设备无关的单位,并且是布局发生后元素实际占用的宽度。只需将此属性乘以上面计算的每个 WPF 单位的像素即可得到答案。
然而,我怀疑您做了太多手动编码。通常可以通过设置相关控件/画笔的属性来简单地以任何所需的方式拉伸图像和其他视觉元素。您是否尝试过为包含位图的元素设置 HorizontalAlignment="Stretch" 和 VerticalAlignment="Center" ?
不隶属于 StackOverflow