调整 wpf 材质设计图标的粗细

Posted

技术标签:

【中文标题】调整 wpf 材质设计图标的粗细【英文标题】:adjust the tickness of wpf material design icons 【发布时间】:2021-01-10 03:17:41 【问题描述】:

我有这个 UI,它利用了漂亮的 Material Design In XAML 及其图标包。

我想调整绘图线条的刻度,使其更细一些,例如本例中的小图标。

<ListBoxItem>
    <StackPanel Orientation="Horizontal">
        <materialDesign:PackIcon Kind="AccountsAddOutline" />
        <TextBlock Margin="10,0,0,0">Add user</TextBlock>
    </StackPanel>
</ListBoxItem>

<ListBoxItem>
    <StackPanel Orientation="Horizontal">
        <materialDesign:PackIcon Kind="DeleteForeverOutline" />
        <TextBlock Margin="10,0,0,0">Delete</TextBlock>
    </StackPanel>
</ListBoxItem>

我不知道库的 API 是否公开了这个属性,但可以肯定的是刻度是可调的,因为如果你把图标变大,这条线也会像这个例子一样变成刻度:

<materialDesign:PackIcon Kind="AccountsAddOutline" Height="40" Width="40" />

结果:

【问题讨论】:

【参考方案1】:

您无法真正调整厚度。 PackIcon 的模板在 ViewBox 中实现为 Path,它可以拉伸和缩放它:

<ControlTemplate TargetType="x:Type local:PackIcon">
    <Border Background="TemplateBinding Background" 
            BorderBrush="TemplateBinding BorderBrush"
            BorderThickness="TemplateBinding BorderThickness">
        <Viewbox FlowDirection="TemplateBinding FlowDirection">
            <Canvas Width="24" Height="24">
                <Path Data="Binding Data, RelativeSource=RelativeSource TemplatedParent"                                   
                      Fill="TemplateBinding Foreground" />
            </Canvas>
        </Viewbox>
    </Border>
</ControlTemplate>

您可以通过创建没有Viewbox 的自定义模板来摆脱缩放。

【讨论】:

可以不通过PackIcon直接使用Path吗? @AgostinoX:PackIcon 定义了Path。但如前所述,您可以重新模板化 PackIcon 元素。

以上是关于调整 wpf 材质设计图标的粗细的主要内容,如果未能解决你的问题,请参考以下文章

图标设计原则

材质图标的 css 后备

材料设计 wpf 图标按钮不停靠在右侧

材料设计图标颜色

WPF 绕圈进度条

设计干货|聊聊设计师玩转Sketch的那些事儿