文件类型的WPF图标显示模糊
当使用SHGetFileInfo从操作系统获取图标并将其转换为位图源时,它看起来很模糊。我怎样才能防止这种情况 我的XAML:文件类型的WPF图标显示模糊,wpf,Wpf,当使用SHGetFileInfo从操作系统获取图标并将其转换为位图源时,它看起来很模糊。我怎样才能防止这种情况 我的XAML: <Window x:Class="IconBug.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" T
<Window x:Class="IconBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Image x:Name="image" Stretch="None"
VerticalAlignment="Center" HorizontalAlignment="Center"
SnapsToDevicePixels="True" />
</Grid>
</Window>
您需要在窗口声明中设置UseLayoutRounding=“True”
Window x:Class="IconBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" UseLayoutRounding="True" >
您需要在窗口声明中设置UseLayoutRounding=“True”
Window x:Class="IconBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" UseLayoutRounding="True" >
您是否尝试添加到
图像渲染中。BitmapScalingMode=“High Quality”
?@bars222-立即尝试-没有区别,抱歉调用SHGetFileInfo
,0x101
将检索20x20图标,而0x100
将返回一个40x40图标。@jstreet不正确-我在代码中创建位图源的行上设置了一个断点,可以非常清楚地看到它是一个16x16图像。然而,即使你是正确的,这也不重要-我从图像控件中删除了固定的宽度和高度,它仍然模糊。顺便说一句,对于那些继续提出小图标/大图标差异的人来说。当我用0x100运行它并得到一个大图标时,我确实得到了大版本,但它仍然模糊。您是否尝试将其添加到图像渲染中。BitmapScalingMode=“HighQuality”
?@bars222-立即尝试-没有区别,很抱歉调用SHGetFileInfo
,0x101
将检索一个20x20图标,而0x100
将返回一个40x40图标。@jstreet不正确-我在代码中创建位图源的行上设置了一个断点,可以非常清楚地看到它是一个16x16图像。然而,即使你是正确的,这也不重要-我从图像控件中删除了固定的宽度和高度,它仍然模糊。顺便说一句,对于那些继续提出小图标/大图标差异的人来说。当我用0x100运行它并得到一个大图标时,我确实得到了一个大版本,但它仍然很模糊。一旦我被允许,我会尽快给你奖金。您是对的,尽管您编写的内容与UseLayoutRounding的文档直接相反-我引用“如果UseLayoutRounding无法在根目录下设置,请在子目录上设置SnapsToDevicePixels以获得您想要的效果。”因此SnapsToDevicePixels应该具有相同的效果,但出于某种原因,图像控件没有。这很奇怪,但谢谢你。顺便说一下,你也可以将UseLayoutRounding=“True”设置为图像本身,无需使用此设置来打扰窗口。一旦允许,我将立即奖励你。您是对的,尽管您编写的内容与UseLayoutRounding的文档直接相反-我引用“如果UseLayoutRounding无法在根目录下设置,请在子目录上设置SnapsToDevicePixels以获得您想要的效果。”因此SnapsToDevicePixels应该具有相同的效果,但出于某种原因,图像控件没有。这很奇怪,但谢谢。顺便说一下,您也可以将UseLayoutRounding=“True”设置为图像本身,无需使用此设置来打扰窗口。