【问题标题】:WPF - canvas height in pixelsWPF - 画布高度(以像素为单位)
【发布时间】:2009-03-04 16:43:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf pixels


    【解决方案1】:

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

    每个 WPF 单元的像素 = ConstantWPFUnit 大小 * 监视器 DPI;

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

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

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

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

    【讨论】:

    • 你是对的,我把问题复杂化了,垂直+水平对齐成功了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多