这是我的按钮模板,
<Microsoft_Windows_Themes:ButtonChrome
x:Name="Chrome"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
RenderDefaulted="{TemplateBinding IsDefaulted}"
RenderMouseOver="{TemplateBinding IsMouseOver}"
RenderPressed="{TemplateBinding IsPressed}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image
Source="{TemplateBinding ImageSource}"
RenderOptions.BitmapScalingMode="NearestNeighbor"
SnapsToDevicePixels="True"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stretch="None"
/>
<ContentPresenter
Grid.Column="1"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
RecognizesAccessKey="True"/>
</Grid>
</Microsoft_Windows_Themes:ButtonChrome>
现在你可以根据这个问题看到我的图像在我试过的 StackOverflow 上很模糊..
RenderOptions.BitmapScalingMode="NearestNeighbor"
在所有级别上,网格、铬 .. 并尝试了 SnapsToDevicePixels 的各种组合,但图像无法正确显示。我设置了Stretch=None,图像在中心对齐,为什么它会自动拉伸?
这是输出,非常令人沮丧。
WPF 上的坏图像 http://akashkava.com/blog/wp-content/uploads/2009/12/BadButton.PNG
图像的实际大小是 16x16,但我通过使用 Windows Maginifier 发现无论我做什么,图像实际上都在尝试渲染为 20x20,对于更大的图像,它甚至会裁剪最右侧和底部。我认为当 Stretch=None 时图像应该正确渲染为 16x16,有人可以在这里澄清什么问题吗?