Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我不能使用自己的笔刷子类(在.NET中)?_C#_.net_System.drawing_Monomac_Brush - Fatal编程技术网

C# 为什么我不能使用自己的笔刷子类(在.NET中)?

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

我在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.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命名空间。