当我尝试创建 Graphics 的对象时,为什么以下操作不起作用?
System.Drawing.Graphics graphicsObj = new System.Drawing.Graphics();
(我知道我可以创建一个private System.Windows.Forms.Panel Obj;
然后CreateGraphics()
如果我想要它工作的话)
我试图为 Graphics 找到一个自定义构造函数,但我找不到。微软在哪里定义它,或者它是如何阻止它的?
当我尝试创建 Graphics 的对象时,为什么以下操作不起作用?
System.Drawing.Graphics graphicsObj = new System.Drawing.Graphics();
(我知道我可以创建一个private System.Windows.Forms.Panel Obj;
然后CreateGraphics()
如果我想要它工作的话)
我试图为 Graphics 找到一个自定义构造函数,但我找不到。微软在哪里定义它,或者它是如何阻止它的?
只有在没有其他声明的构造函数时,C# 编译器才会创建默认构造函数。在这种情况下,看起来所有构造函数都是内部的或私有的。基本上你不会自己构建一个——你从图像、控件或其他东西中要求一个,或者为绘画事件等获得一个。
很明显,Graphics 不能有默认的构造函数。你总是希望你画的东西在某处可见。默认构造函数无法选择绘图的目的地。
获取 Graphics 对象的方法:
Graphics.FromImage()
. 您将绘制成位图。在调整图像大小或创建“画布”时很常见。Control.CreateGraphics()
. 让我们直接在屏幕上绘制。总是错的,而是使用:Graphics.FromHdc()
. 在低级 P/Invoke 代码中使用,绘制到 Windows 的设备上下文。Graphics.FromHwnd()
. 如上所述,直接绘制到本机窗口。总之:
FromImage()
Microsoft 没有给出 Graphics 对象的构造函数。创建实例的唯一方法是通过静态方法,例如 CreateGraphics() 或 FromImage()。这就是您的代码不起作用的原因。此外,作为旁注,不能继承 Graphics 对象。