- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在哪里可以找到有关 Brushes 如何工作以实现我自己的 System.Windows.Media.Brush 的足够信息?我可以处理所有可卡住的行李,但我需要覆盖什么才能使其正常工作并不是很明显。
是的,所以我并不是说我想使用预定义的画笔。我想扩展 System.Windows.Media.Brush,它是一个抽象类。这一切纯粹是为了我自己的启迪。我什至不确定我可以制作什么样的刷子。我只是想了解画笔的工作原理。如:
public AwesomeBrush : Brush
{
protected override Freezable CreateInstanceCore()
{
return new AwesomeBrush();
}
... // concrete brush stuff
}
最佳答案
我使用 Reflector 快速浏览了现有的画笔.看起来他们的实现非常封闭并且依赖于很多 internal
管道。虽然可以实现自己的画笔,但它似乎不受支持。甚至可能 WPF 控件与现有画笔紧密相连,无法与自定义画笔一起使用。
最有可能实现类似自定义画笔的最佳方法是使用 DrawingBrush带有一些复杂的绘图逻辑。您可以使用其他画笔从复杂的形状组合绘图画笔,这样您就可以实现所需的目标。
编辑后更新
由于这是用于教育,您最好下载 Reflector 并使用它来查看画笔的工作原理。它们并不是要自行实现,因为它们依赖于一些 internal
程序员通常无法访问的类将很难这样做。
尽管有趣的是 Brush documentation确实有一个注释,供继承者以正确的方式从 Brush 继承。
更多更新
当我四处闲逛时,我发现了一种非常巧妙的方法可以在 chinese blog 上实现类似的目标。 .诀窍是使用标记扩展,使其看起来像一个画笔。实际上,它会根据其属性创建一个新的图像笔刷。似乎他得出了同样的结论,即有一些内部类阻止了简单的实现。
关于.net - 如何在 WPF 中实现自定义画笔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/794512/
我是一名优秀的程序员,十分优秀!