Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件类型的WPF图标显示模糊_Wpf - Fatal编程技术网

文件类型的WPF图标显示模糊

文件类型的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

当使用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"
        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”设置为图像本身,无需使用此设置来打扰窗口。