我如何确定画布的像素宽度(画布已有一定宽度)?
我在一个AnimatedImage控件中有一个位图,我知道该位图的像素宽度,并且我想按比例缩放该位图,使其水平完全适合于画布。如何确定这个比例?
注意:我不需要使用RenderTargetBitmap,因为该位图已经加载。
在WPF中,单位是与设备无关的。计算单位的实际像素大小的公式为:
每个WPF单位的像素数 = ConstantWPFUnit size * 监视器DPI;
你元素的像素大小 = 每个WPF单位的像素数 * MyElement.ActualWidth。
常量WPF单位大小为1/96。如果我记得正确的话,可以从SystemInformation.GetPrimaryMonitor返回的类的属性中找到监视器DPI。
FrameworkElement的ActualWidth以设备无关单位表示,是元素进行布局后实际占用的宽度。只需将此属性乘以上述计算出的每个WPF单位的像素数,即可得到答案。
我怀疑你做了太多手动编码。通过设置所涉及控件/画刷的属性,通常可以简单地按任意所需方式拉伸图像和其他视觉元素。你是否尝试将包含位图的元素的HorizontalAlignment设置为“Stretch”,将VerticalAlignment设置为“Center”?