wpf - WPF中是否有一个 "Pens"类来补充 "Brushes"和 "Colors"?

标签 wpf colors brushes

没有一个叫Pens,这是肯定的,但是找不到它就太奇怪了。是真的没有,还是我瞎了?

(我只是在寻找一个方便的类 - 例如,Colors.RedBrushes.Red 就在那里,但对于钢笔来说,最短的似乎是 新笔(Brushes.Red, 1))

最佳答案

没有关联的 Pens 类,因为 PenBrush and a Thickness 标识。而不仅仅是一项属性(property)。

如果您需要一套标准笔(基于一定的厚度),那么您将必须创建自己的笔。另一种方法是创建一个代码生成器来提供适当的笔。

下面是一个为每个默认 Brush 添加 Pen 的类示例:

public class DefaultPens
{
    private Dictionary<Brush, Pen> pens;

    public double Thickness
    {
        get;
        private set;
    }

    // used like defaultPens[Brushes.Red]
    public Pen this[Brush brush]
    {
        get { return this.pens[brush]; }
    }

    public DefaultPens(double thickness)
    {
        this.pens = typeof(Brushes).GetProperties(BindingFlags.Static)
                                   .Where(pi => pi.PropertyType == typeof(Brush))
                                   .Select(pi => pi.GetValue(null, null))
                                   .ToDictionary(
                                       b => b,
                                       b => new Pen(b, thickness));
        this.Thickness = thickness;
    }
}

关于wpf - WPF中是否有一个 "Pens"类来补充 "Brushes"和 "Colors"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650875/

相关文章:

c++ - 在 Win32 中更改子类按钮的背景颜色

wpf - 在 WPF 中的单个 GeometryDrawing 中使用多个画笔

wpf - 调整大小时防止 XAML 网格背景变形

c# - WPF、C#、SQL - 在数据库中创建行

wpf - 复合 WPF : Data Template vs. 查看模型注入(inject)

c# - 当 Item 改变时通知 ObservableCollection

c# - WPF ListView 中的多维绑定(bind)

php - 在 PHP 中将十六进制颜色转换为 RGB 值

colors - 找出在 Office 2007 样式中使用 MFC 功能包时正在使用的颜色

wpf - 动画从 LinearGradientBrush 更改为 SolidColorBrush