如何确定画布(具有一定宽度)的宽度(以像素为单位)?
我在AnimatedImage控件中有一个位图,我知道位图的宽度(以像素为单位),我想缩放位图,使其水平适合画布。我如何确定这种规模?
注意:我不需要使用RenderTargetBitmap,因为位图已经加载。
答案 0 :(得分:13)
在WPF中,设备与设备无关。计算单位实际像素大小的公式为:
每个WPF单位的像素数= ConstantWPFUnit大小*监视DPI;
元素大小(以像素为单位)=每个WPF单位的像素数* MyElement.ActualWidth
常量WPF单位大小为1/96。如果我没记错的话,监视器DPI可以作为从SystemInformation.GetPrimaryMonitor返回的类中的属性或类似的东西找到。
FrameworkElement的ActualWidth是与设备无关的单位,是布局发生后元素实际占用的宽度。只需将此属性乘以您在上面计算的每个WPF单位的像素,就可以得到答案。
我怀疑你做了很多手动编码。通过在所讨论的控件/画笔上设置属性,通常可以通过任何所需方式拉伸图像和其他视觉元素。您是否尝试为包含位图的元素创建HorizontalAlignment =“Stretch”和VerticalAlignment =“Center”?