如何确定画布(具有一定宽度)的宽度(以像素为单位)?

我在 AnimatedImage 控件中有一个位图,并且我知道该位图的宽度(以像素为单位),并且我想缩放该位图,使其水平完全适合画布。我如何确定这个比例?

笔记:我不需要使用 RenderTargetBitmap,因为位图已经加载。

有帮助吗?

解决方案

在 WPF 中,单位是独立于设备的。计算单位实际像素大小的公式为:

每个 WPF 单位的像素 = ConstantWPFUnit 大小 * 显示器 DPI;

元素的大小(以像素为单位) = 每个 WPF 单位的像素 * MyElement.ActualWidth

恒定的 WPF 单元大小为 1/96。如果我没记错的话,监视器 DPI 可以作为从 SystemInformation.GetPrimaryMonitor 或类似内容返回的类中的属性找到。

FrameworkElement 的 ActualWidth 采用与设备无关的单位,并且是布局发生后元素实际占用的宽度。只需将此属性乘以上面计算的每个 WPF 单位的像素即可得到答案。

然而,我怀疑您做了太多手动编码。通常可以通过设置相关控件/画笔的属性来简单地以任何所需的方式拉伸图像和其他视觉元素。您是否尝试过为包含位图的元素设置 Horizo​​ntalAlignment="Stretch" 和 VerticalAlignment="Center" ?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top