c# - RibbonControl 正在拉伸(stretch)图像

标签 c# wpf xaml .net-4.0

我在 WPF 应用程序中使用 Microsoft.Windows.Controls.Ribbon,它会将 RibbonCommand 图像拉伸(stretch)得比预期更大。图片插入如下:

<r:RibbonApplicationMenu.Command>
     <r:RibbonCommand LargeImageSource="/Resources/Images/FSRibbon.png" />
</r:RibbonApplicationMenu.Command>

这里是 FSRibbon.png:enter image description here 它是 32x28 32 位 png。我还尝试过 32 x 32,以及周围有空填充的 48 x 48。无论我做什么,功能区控件都会显示如下:

enter image description here

正如您所看到的,它被放大了,就好像它被拉伸(stretch)到 48x48 Canvas 上一样。但如果我提供 48x48 的图像,它也会同样放大。 RibbonCommand 不提供任何控制图像拉伸(stretch)的方法,因此没有像 <Image/> 这样的东西。对象的Stretch="None"属性由我来设置。这是怎么回事?


尝试

我已经尝试过这个: enter image description here

最佳答案

This这个问题让我意识到 WPF 在适应不同的图像分辨率(DPI/每英寸像素等)方面并不是那么神奇。前面提到的问题说Windows标准是96 DPI,我猜这是像素/英寸的同义词。我上面上传的图像恰好是 72 像素/英寸。

我尝试使用 GIMP(开源图像编辑器)中的“缩放图像”将其转换为 96,神奇的是,它开始得到正确处理。

enter image description here --> enter image description here

就好像我们这些卑微的程序员应该知道这些垃圾一样:p

关于c# - RibbonControl 正在拉伸(stretch)图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8345571/

相关文章:

c# - TextBox 中的居中占位符文本

wpf - Xamly 确定 ListBox.Items.Count 是否 > 0

c# - Azure DocumentClient 线程安全

c# - MySQL 查询的 StringBuilder 空检查

c# - 为什么 Array.Length 是一个 int,而不是一个 uint

wpf - 将相同样式应用于多个元素

c# - 在 WPF 的主窗口上绘画

c# - 当属性值更改时向 wpf Controller 添加事件

c# - 使用带有 EFCore5.0 错误 System.InvalidOperationException 的存储过程

c# - 数据绑定(bind)、属性更改事件