C# WPF/XAML中带图标工具栏的实现
在我的基于桌面的WPF应用程序中,我希望实现一个带有关键操作(添加、更新、删除等)的工具栏,就像您在任何web界面邮件服务中看到的那样 为了做到这一点,我有一个大的PNG图像和所有可能的图标(常规、活动、禁用等) 所以,我的问题是如何不显示整个图像,而只显示一个区域。例如,从像素50到像素100,在我的图标为正方形且有50px边的情况下 换句话说,如果所有图标都放在一个大的PNG图像上,您建议如何在WPF中实现选择要显示在工具栏按钮内部的图像的一个子部分 谢谢C# WPF/XAML中带图标工具栏的实现,c#,.net,wpf,xaml,toolbar,C#,.net,Wpf,Xaml,Toolbar,在我的基于桌面的WPF应用程序中,我希望实现一个带有关键操作(添加、更新、删除等)的工具栏,就像您在任何web界面邮件服务中看到的那样 为了做到这一点,我有一个大的PNG图像和所有可能的图标(常规、活动、禁用等) 所以,我的问题是如何不显示整个图像,而只显示一个区域。例如,从像素50到像素100,在我的图标为正方形且有50px边的情况下 换句话说,如果所有图标都放在一个大的PNG图像上,您建议如何在WPF中实现选择要显示在工具栏按钮内部的图像的一个子部分 谢谢 顺便说一句,我来自web开发,在那
顺便说一句,我来自web开发,在那里通常使用一个带有所有图标的大PNG图像,当你想放置一个特定的图标时,你必须定义你想在图像中显示的区域。这确实不是WPF中管理图像资源的方式,如果你这样做,你将与平台的自然机制作斗争。您应该考虑将图像拆分,然后将每一个图像分配给视图中的资源。然后可以绑定到UI中的每一个,并将其显示为图像或笔刷源
如果要将它们保留为一个大图像,则可以使用选择框将其选中,并仅显示所需图像的区域。您可能需要查看
BitmapImage
类(图像源)上的
然而,我认为codekaizen是正确的,这可能不是正确的方法。您可以将按钮的背景设置为带有图像的
图像笔刷。将TileMode
设置为None
并将ViewboxUnits
设置为Absolute
。您可以将Viewbox
设置为适当的区域。然后可以绑定到属性以动态更改图像,或者如果它是静态图像,则直接设置值
<Button Width="80" Height="80">
<Button.Background>
<ImageBrush ImageSource="..." TileMode="None" ViewboxUnits="Absolute">
<ImageBrush.Viewbox>
<Rect Size="80,80" X="{Binding ...}" />
</ImageBrush.Viewbox>
</ImageBrush>
</Button.Background>
</Button>
我同意,这不是最有效地利用资源,但下面是如何做到的