我正在寻找一种为Segoe MDL2图标添加颜色的方法。我的应用程序中的字形当前是TextBlock资源,其定义如下:
<TextBlock x:Key="PenSymbol" x:Shared="False" FontFamily="Segoe MDL2 Assets" Text="" FontSize="16" TextOptions.TextRenderingMode="Grayscale"/>
我追求的效果是左侧3个图标中的一个:
这是Window 10 Sketchpad中工具栏的屏幕截图(应用了Creators更新之后)。
编辑:我知道如何更改文本颜色,我试图弄清楚如何获得“部分填充”效果(屏幕截图中的蓝色,黑色和黄色)。
Edit2:必须显示2个不同的字形才能实现此效果。在上次更新中,背景所需的字形已添加到Segoe MDL2字体中。感谢mm8向我指出了正确的方向。
XAML:
<Style x:Key="SymbolText" TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="16"/>
<Setter Property="UseLayoutRounding" Value="True"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
<Setter Property="TextOptions.TextRenderingMode" Value="Grayscale"/>
</Style>
<StackPanel Orientation="Horizontal">
<Grid Margin="4">
<TextBlock Text="" Style="{StaticResource SymbolText}" Foreground="OrangeRed"/>
<TextBlock Text="" Style="{StaticResource SymbolText}"/>
</Grid>
<Grid Margin="4">
<TextBlock Text="" Style="{StaticResource SymbolText}" Foreground="LightGreen"/>
<TextBlock Text="" Style="{StaticResource SymbolText}"/>
</Grid>
<Grid Margin="4">
<TextBlock Text="" Style="{StaticResource SymbolText}" Foreground="LightBlue"/>
<TextBlock Text="" Style="{StaticResource SymbolText}"/>
</Grid>
</StackPanel>
结果:
最佳答案
将Foreground
属性设置为Brush
:
<TextBlock x:Key="PenSymbol" x:Shared="False" Foreground="Red" FontFamily="Segoe MDL2 Assets" Text="" FontSize="16"/>
如上MSDN上的文档所述,通过直接在彼此之上绘制字形,可以完全实现分层和着色效果。
https://docs.microsoft.com/en-us/windows/uwp/style/segoe-ui-symbol-font