Когда я пытаюсь создать объект Графики, почему следующее не работает?
System.Drawing.Graphics graphicsObj = new System.Drawing.Graphics();
(Я знаю, что мог создать a private System.Windows.Forms.Panel Obj;
и затем сделайте CreateGraphics()
если я хотел, чтобы это работало),
Я пытался найти пользовательского конструктора для Графики, но я не мог найти тот. Где Microsoft определяла его, или как это блокировало его?
Конструкторы по умолчанию создаются компилятором C # только в том случае, если нет других объявленных конструкторов. В этом случае похоже, что все конструкторы внутренние или частные. По сути, вы не создаете его сами - вы просите один из изображения, элемента управления или чего-то еще, или получаете один для событий рисования и т. Д.
Интуитивно очевидно, что Graphics не может иметь конструктора по умолчанию. Вы всегда хотите, чтобы то, что вы рисуете, было где-то видно. Конструктор по умолчанию не может выбрать место назначения чертежа.
Способы получения объекта Graphics:
Graphics.FromImage ()
. Вы будете рисовать в растровом изображении. Часто используется при изменении размера изображений или для создания «холста». Control.CreateGraphics ()
. Давайте рисовать прямо на экране. Всегда неверно, вместо этого используйте: Graphics.FromHdc ()
. Используется в низкоуровневом коде P / Invoke, обращается к контексту устройства Windows. Graphics.FromHwnd ()
. Как и выше, рисует прямо в собственное окно. Вкратце:
FromImage ()
Корпорация Майкрософт не предоставила конструкторы объектов Graphics. Единственный способ создать экземпляр - использовать статические методы, такие как CreateGraphics () или FromImage (). Вот почему ваш код не работает. Кроме того, как примечание, объект Graphics не может быть унаследован от.