我有一个带有图像的按钮,不管我做什么,呈现/编译后图像看起来都很模糊。
FYI -当不在WPF控件中时,图像看起来很好。
left
上的图像在编译之前,right
上的图像在编译后模糊。
我试着应用UseLayoutRounding,应用SnapsToDevicePixels,RenderOptions.BitmapScalingMode,直接移除按钮中的反走样,直接应用到图像上,但什么也没有。
知道如何提高WPF中的图像质量吗?
XAML:
直接应用于按钮的样式:
<Grid>
<Button x:Name="recentButton" UseLayoutRounding="True" RenderOptions.BitmapScalingMode="HighQuality" SnapsToDevicePixels="True" RenderOptions.EdgeMode="Aliased"
Margin="10,137,302,10"
Width="auto"
Height="23"
HorizontalAlignment="Stretch"
BorderBrush="{x:Null}"
Foreground="White"
BorderThickness="0"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Image Source="/Tool;component/Design/Images/more-icon-active.png" Stretch="None"/>
</Button>
</Grid>
直接应用于图像的样式:
<Grid>
<Button x:Name="recentButton"
Margin="10,137,302,10"
Width="auto"
Height="23"
HorizontalAlignment="Stretch"
BorderBrush="{x:Null}"
Foreground="White"
BorderThickness="0"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Image Source="/Tool;component/Design/Images/more-icon-active.png" UseLayoutRounding="True" RenderOptions.BitmapScalingMode="HighQuality" SnapsToDevicePixels="True" RenderOptions.EdgeMode="Aliased" Stretch="None"/>
</Button>
</Grid>
发布于 2018-07-18 12:45:56
问题是您直接在控件上使用UseLayoutRounding
。
但是,在相关文件中要注意到这一点,
您应该在根元素上将UseLayoutRounding设置为true。布局系统将子坐标添加到父坐标;因此,如果父坐标不在像素边界上,则子坐标也不在像素边界上。如果不能在根处设置UseLayoutRounding,请在子节点上设置SnapsToDevicePixels以获得所需的效果。
因此,在父容器上使用它而不是。在您的示例中,这将位于on <grid>
元素上。
其他命令
根据图像的类型,RenderOptions.BitmapScalingMode="NearestNeighbor"
可能会增加一些清晰度。
请注意,您必须直接将其应用到图像上。
在顶级元素上设置TextOptions.TextFormattingMode="Display"
,可以极大地改进桌面计算机上的文本呈现。
https://stackoverflow.com/questions/51401969
复制相似问题