具体地说,我希望使用VS2008ImageLibrary附带的16*16 32位png图像。我尝试过手动设置图像的高度和宽度属性,调整边距和填充,调整Stretch和RenderOptions。我创建工具栏按钮的尝试都导致了不正确的缩放(模糊图标),图标上的底行像素被截断,或者工具栏按钮的大小不正确-更不用说已经提到的Here消失的图标了。有没有人找到了让标准的VisualStudio/WinForms风格的工具栏按钮在WPF中正确显示的最佳方法?
发布于 2009-03-28 23:43:11
首先,将图像分辨率更改为96DPI,这可以使用免费的Paint.net ( http://www.getpaint.net )完成,方法是打开文件,从菜单中选择图像->画布大小,将“分辨率”调整为96并保存。
如果这不起作用,那么可以使用我在我的博客中写的解决方案,这里是http://www.nbdtech.com/blog/archive/2008/11/20/blurred-images-in-wpf.aspx
发布于 2009-03-28 11:55:40
最好的方法是使用矢量图形而不是png。我知道下面的内容不是你想要的,但是imho没有办法让图标看起来更好看。此外,它还可以帮助您摆脱页边距和填充。(好吧,如果你想用照片,那你就完蛋了)
坏消息是你可能需要重新绘制所有的图标。您可以使用MS Expression Blend(它能够将绘制的图像另存为.xaml)来完成此操作,也可以使用文本编辑器自行创建它们。我更喜欢放置图标的Border.Background而不是Image.Source,这允许我将文本放在图像上。下面的代码看起来是这样的:
<Window.Resources>
<ResourceDictionary Source="Resources/Icons.xaml"/>
</Window.Resources>
<!--
...
-->
<Button>
<Border Background="{StaticResource IconName}" Height="16" Width="16" />
</Button>
发布于 2009-03-28 09:02:21
我能想到的最好的解决方法是:
<Image x:Key="TB_NewIcon" Source="Toolbar Images/NewDocumentHS.png" Height="16" Width="16" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
...
<Button Command="ApplicationCommands.New" Content="{StaticResource TB_NewIcon}" Padding="2,2,2,1"/>
或者:
<BitmapImage x:Key="TB_NewIcon" UriSource="Toolbar Images\NewDocumentHS.png"/>
...
<Button Command="ApplicationCommands.New" Padding="2,2,2,1">
<Image Source="{StaticResource TB_NewIcon}" Height="16" Width="16" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
</Button>
对于Button标记,需要padding属性来确保图像不会在15像素的高度被截断,并且按钮的大小不会调整以适合图像。或者,我们可以指定Padding="1",但是我们必须手动设置Height="21“和Width="22”,以确保按钮的大小不会调整到适合图像
在“图像”选项卡上,需要设置高度和宽度以确保图像不会被拉伸。SnapsToDevicePixels和RenderOptions.BitMapScalingMode都是必需的,以确保不会模糊。我不能保证这对所有的解决方案都能很好地工作。
注意:对于NewDocumentHS.png图标,问题最多的一个,因为它占用了整整16个像素的高度,你可能想要调整填充为"1,1,3,2",以便底部与其他图标对齐得更好。
https://stackoverflow.com/questions/692334
复制