Xaml uwp中的按钮图标着色

Xaml uwp中的按钮图标着色,xaml,win-universal-app,uwp,uwp-xaml,Xaml,Win Universal App,Uwp,Uwp Xaml,我有一个按钮,里面有一个白色的图标。如何使用XAML更改图标的颜色 Android支持对ImageView着色,如下所示: <ImageView android:layout_width="@dimen/toolbar_icon_size" android:layout_height="@dimen/toolbar_icon_size" android:src="@drawable/btn_home" android:tint="@{@android:color/black}" />

我有一个按钮,里面有一个白色的图标。如何使用XAML更改图标的颜色

Android支持对ImageView着色,如下所示:

<ImageView android:layout_width="@dimen/toolbar_icon_size" android:layout_height="@dimen/toolbar_icon_size" android:src="@drawable/btn_home" android:tint="@{@android:color/black}" />

如何在XAML/UWP中执行此操作


我的代码

资源文件:

 <Image x:Key="icon_home" Stretch="Fill" Source="ms-appx:///Assets/ToolbarIcons/drawable-xhdpi/btn_home.png"/>

页面文件:

<UserControl.Resources>
    <ResourceDictionary Source="ms-appx:///Resources/Images.xaml" />
</UserControl.Resources>



正如@Clemens所说,你的图标是一个图像文件,有很多方法可以改变它的颜色,但我认为最简单的方法是用另一个图像源替换这个图像源

我看到了你的评论,也许你想要的是使图像黑白,在UWP中没有像在Andriod中那样简单的方法,如果你坚持使用图像并在代码中更改其颜色,那么这里有一种方法,你可以参考我的


另一个相当简单的方法是,你可以使用,可能是你需要的

正如Grace Feng所提到的,你无法像Android所允许的那样动态地给按钮(或任何元素)着色(至少不容易)。在UWP中,通常最好使用矢量资源而不是位图,因为它们可以缩放到任何分辨率而不丢失清晰度,并且可以动态着色

我有其他一些建议:

使用


可以从枚举中选择要显示的图像。UWP附带了许多合适的图标,可供选择。SymbolIcon的前景将从按钮继承

SymbolIcon的一个恼人之处是,如果您想更改其大小,则需要将其包装在一个文件中,并设置Viewbox的大小

使用


FontIcon类允许您选择包含要显示的图标的合适字体。Windows 10内置Segoe MDL2资产字体。您可以找到标志符号。它还尊重FontSize属性,这很好

使用

如果希望使用完全自定义的图标,则此类允许您显示路径数据中的图像

<Button Foreground="Red">
    <PathIcon Data="M0,20 L10,0 L20,20 Z" Width="20" Height="20"/>
</Button>

您需要提供定义图标几何图形的。这与SVG图像中使用的标记基本相同,因此从一个简单的SVG资产中获取此信息应该不难


您还需要使用Viewbox(或RenderTransform)来更改其大小。

您应该使用BitmapIcon而不是od Image。这样,您不必使用向量,但可以对其着色。您不必使用完整路径“ms”-appx:///Assets/ToolbarIcons/drawable-xhdpi您可以只键入“Assets/…”



图标是一个图像文件,因此您无法(轻松)更改其颜色。您可能最好使用带有几何图形的路径作为图标。@Clemens谢谢,但我如何使用路径,我不知道如何使用它来解决这个问题。这在android平台中非常简单,比如说,有没有一种方法可以填充
SymbolIcon
的图标,即用一种颜色填充主页?@ShimmyWeitzhandler除非主页图标有填充版本,否。
<Button Foreground="Red">
    <SymbolIcon Symbol="Home"/>
</Button>
<Button Foreground="Red" FontSize="30">
    <FontIcon FontFamily="Segoe MDL2 Assets" Glyph="&#xE80F;"/>
</Button>
<Button Foreground="Red">
    <PathIcon Data="M0,20 L10,0 L20,20 Z" Width="20" Height="20"/>
</Button>
<BitmapIcon x:Name="icon_home" UriSource="Assets/ToolbarIcons/drawable-xhdpi/btn_home.png" Foreground="Red"/>