代码之家  ›  专栏  ›  技术社区  ›  Mike Omeiri Kouider

WPF/XAML中带图标工具栏的实现

  •  3
  • Mike Omeiri Kouider  · 技术社区  · 15 年前

    在我的基于桌面的WPF应用程序中,我想实现一个带有关键操作(添加、更新、删除等)的工具栏,就像您在任何web界面邮件服务中看到的那样。

    为了使它,我有一个大的PNG图像与所有可能的图标(常规,活动,禁用等)

    所以,我的问题是如何不显示整个图像,而只显示一个区域。例如,在我的图标是正方形并且有50px的边的情况下,从像素50到像素100。

    谢谢。

    3 回复  |  直到 10 年前
        1
  •  4
  •   codekaizen    10 年前

    这并不是WPF中管理图像资源的方式,如果这样做的话,您将与平台的自然机制作斗争。您应该考虑将图像拆分,然后将每个图像分配给视图中的一个资源。然后可以绑定到UI中的每一个,并使其显示为图像或笔刷源。

    TileBrush 选择它们并仅显示所需图像的区域。

        2
  •  1
  •   Aren    15 年前

    你可能想看看 SourceRect Property BitmapImage

    然而,我认为codekaizen是正确的,这可能不是正确的方法。

        3
  •  1
  •   Jeff Mercado    15 年前

    您可以将按钮的背景设置为 ImageBrush 你的形象。设置 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>
    

    我同意,这不是最有效地利用资源,但这里是如何做到这一点。