7

当我尝试创建 Graphics 的对象时,为什么以下操作不起作用?

System.Drawing.Graphics graphicsObj = new System.Drawing.Graphics();

(我知道我可以创建一个private System.Windows.Forms.Panel Obj;然后CreateGraphics()如果我想要它工作的话)

我试图为 Graphics 找到一个自定义构造函数,但我找不到。微软在哪里定义它,或者它是如何阻止它的?

4

3 回答 3

11

只有在没有其他声明的构造函数时,C# 编译器才会创建默认构造函数。在这种情况下,看起来所有构造函数都是内部的或私有的。基本上你不会自己构建一个——你从图像、控件或其他东西中要求一个,或者为绘画事件等获得一个。

于 2010-05-21T14:20:43.473 回答
3

很明显,Graphics 不能有默认的构造函数。你总是希望你画的东西在某处可见。默认构造函数无法选择绘图的目的地。

获取 Graphics 对象的方法:

  • Graphics.FromImage(). 您将绘制成位图。在调整图像大小或创建“画布”时很常见。
  • Control.CreateGraphics(). 让我们直接在屏幕上绘制。总是错的,而是使用:
  • 绘画事件。e.Graphics 参数可让您绘制到屏幕上。
  • PrintPage 事件。对于 PrintDocument 类,e.Graphics 最终出现在一张纸上。
  • Graphics.FromHdc(). 在低级 P/Invoke 代码中使用,绘制到 Windows 的设备上下文。
  • Graphics.FromHwnd(). 如上所述,直接绘制到本机窗口。

总之:

  • 使用 Paint 事件绘制到屏幕上
  • 使用 PrintPage 事件绘制到打印机
  • 绘制位图FromImage()
于 2010-05-21T15:38:10.130 回答
0

Microsoft 没有给出 Graphics 对象的构造函数。创建实例的唯一方法是通过静态方法,例如 CreateGraphics() 或 FromImage()。这就是您的代码不起作用的原因。此外,作为旁注,不能继承 Graphics 对象。

于 2010-05-21T14:24:27.827 回答