Как удалить конструктор по умолчанию System.Drawing.Graphics? - PullRequest
7 голосов
/ 21 мая 2010

Когда я пытаюсь создать объект Graphics, почему не работает следующее?

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

(я знаю, что могу создать private System.Windows.Forms.Panel Obj;, а затем сделать CreateGraphics(), если я хочу, чтобы он работал)

Я пытался найти собственный конструктор для Graphics, но не смог его найти. Где Microsoft определила это или как это заблокировало?

Ответы [ 3 ]

11 голосов
/ 21 мая 2010

Конструкторы по умолчанию создаются только компилятором C #, если нет других объявленных конструкторов. В этом случае похоже, что все конструкторы являются внутренними или частными. По сути, вы не создаете его самостоятельно - вы запрашиваете его из изображения, элемента управления или чего-либо еще, или получаете его для рисования и т. Д.

3 голосов
/ 21 мая 2010

Интуитивно очевидно, что Graphics не может иметь конструктор по умолчанию. Вы всегда хотите, чтобы то, что вы рисуете, было где-то видно. Конструктор по умолчанию не может выбрать пункт назначения чертежа.

Способы получения графического объекта:

  • Graphics.FromImage(). Вы нарисуете в растровое изображение. Обычный при изменении размера изображений или создании «холста».
  • Control.CreateGraphics(). Давайте рисовать прямо на экране. Всегда неправильно, вместо этого используйте:
  • Событие рисования. Аргумент e.Graphics позволяет вам рисовать на экране.
  • Событие PrintPage. Для класса PrintDocument e.Graphics заканчивается на листе бумаги.
  • Graphics.FromHdc(). Используется в низкоуровневом коде P / Invoke, обращается к контексту устройства Windows.
  • Graphics.FromHwnd(). Как и выше, рисует прямо в собственном окне.

В итоге:

  • Рисование на экране с событием Paint
  • Рисование на принтере с событием PrintPage
  • Рисовать на растровое изображение с FromImage()
0 голосов
/ 21 мая 2010

Microsoft не предоставила конструкторы графических объектов. Единственный способ создать экземпляр - использовать статические методы, такие как CreateGraphics () или FromImage (). Вот почему ваш код не работает. Кроме того, в качестве идентификатора объект Graphics не может быть унаследован от.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...