WPF - 画布高度以像素为单位

4

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

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

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

1个回答

14

在WPF中,单位是与设备无关的。计算单位的实际像素大小的公式为:

每个WPF单位的像素数 = ConstantWPFUnit size * 监视器DPI;

你元素的像素大小 = 每个WPF单位的像素数 * MyElement.ActualWidth。

常量WPF单位大小为1/96。如果我记得正确的话,可以从SystemInformation.GetPrimaryMonitor返回的类的属性中找到监视器DPI。

FrameworkElement的ActualWidth以设备无关单位表示,是元素进行布局后实际占用的宽度。只需将此属性乘以上述计算出的每个WPF单位的像素数,即可得到答案。

我怀疑你做了太多手动编码。通过设置所涉及控件/画刷的属性,通常可以简单地按任意所需方式拉伸图像和其他视觉元素。你是否尝试将包含位图的元素的HorizontalAlignment设置为“Stretch”,将VerticalAlignment设置为“Center”?


你是对的,我把问题想得太复杂了,垂直+水平对齐解决了问题!非常感谢你! - melculetz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接