【发布时间】:2009-12-14 11:40:42
【问题描述】:
这是我的按钮模板,
<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>
现在你可以根据这个问题看到My Images are blurry on StackOverflow我试过了..
RenderOptions.BitmapScalingMode="NearestNeighbor"
在所有级别上,网格、chrome .. 并尝试了 SnapsToDevicePixels 的各种组合,但图像无法正确显示。我设置了Stretch=None,图片居中对齐,为什么还是自动拉伸?
这是输出,非常令人沮丧。
Bad Image on WPF http://akashkava.com/blog/wp-content/uploads/2009/12/BadButton.PNG
图像的实际尺寸为 16x16,但我通过使用 Windows Maginifier 发现无论我做什么,图像实际上都在尝试渲染为 20x20,对于更大的图像,它甚至会裁剪最右侧和底部.我认为当 Stretch=None 时图像应该正确渲染为 16x16,任何人都可以澄清这里有什么问题吗?
【问题讨论】: