C# 为什么我不能使用自己的笔刷子类(在.NET中)?
我在Xamarin.Mac中创建了一个自定义System.Drawing.Brush子类。我的班级是这样的:C# 为什么我不能使用自己的笔刷子类(在.NET中)?,c#,.net,system.drawing,monomac,brush,C#,.net,System.drawing,Monomac,Brush,我在Xamarin.Mac中创建了一个自定义System.Drawing.Brush子类。我的班级是这样的: // ImageBrush: very much like a System.Drawing.TextureBrush, // but based on a Lanet.Drawing.Image instead. public class ImageBrush : System.Drawing.Brush { public Lanet.Drawi
// ImageBrush: very much like a System.Drawing.TextureBrush,
// but based on a Lanet.Drawing.Image instead.
public class ImageBrush : System.Drawing.Brush {
public Lanet.Drawing.Image image;
public ImageBrush(Lanet.Drawing.Image image) {
this.image = image;
}
public override object Clone() {
return new ImageBrush(image);
}
}
这可以很好地编译,但当我实际将其中一个传递给System.Drawing.Pen构造函数时,框架会抛出System.ArgumentException,并找到空引用或无效值
假设笔刷是从MustInherit抽象笔刷类派生的任何类的实例。在我看来,这就是我在这里得到的,但框架并不买账。我做错了什么?还是这真的不可能
注意:我不关心这个画笔是否使用标准系统绘制。绘制例程。。。我只需要这样做,就可以将我自己的数据传递给一些自定义绘图代码。Brush类的重要部分是它包装了一个GDI+笔刷对象。您的派生类不会初始化任何此类画笔对象。当然,我的自定义绘图代码的全部要点是在Mac和iOS上不使用GDI+即可工作。我找不到任何文件要求笔刷必须包裹GDI+对象。但是,听起来无论如何这可能是现实。当然,它不是公共API的一部分。这是所有私有实现细节。但是,如果您想将该类与BCL的其他GDI+图形类一起使用,它们是绝对必需的。替代类库必须重新实现整个System.Drawing命名空间。