簡體   English   中英

如何刪除System.Drawing.Graphics的默認構造函數?

[英]How is the default constructor of System.Drawing.Graphics removed?

當我嘗試創建Graphics的對象時,為什么以下不起作用?

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

(我知道我可以創建一個private System.Windows.Forms.Panel Obj;如果我希望它可以工作,那么可以創建CreateGraphics()

我試圖為Graphics找到一個自定義構造函數,但我找不到一個。 微軟在哪里定義它,或者它是如何阻止它的?

如果沒有其他聲明的構造函數,則默認構造函數僅由C#編譯器創建。 在這種情況下,它看起來像所有構造函數是內部的或私有的。 基本上你不是自己構造一個 - 你從一個圖像,控制或任何東西要求一個,或獲得一個油漆事件等。

很明顯,Graphics不能有默認的構造函數。 你總是希望你畫的東西在某個地方可見。 默認構造函數無法選擇圖形的目標。

獲取Graphics對象的方法:

  • Graphics.FromImage() 你將繪制一個位圖。 調整圖像大小或創建“畫布”時常見。
  • Control.CreateGraphics() 我們直接畫到屏幕上。 總是錯的,而是使用:
  • 油漆事件。 e.Graphics參數允許您繪制到屏幕。
  • PrintPage事件。 對於PrintDocument類,e.Graphics最終會在一張紙上。
  • Graphics.FromHdc() 在低級P / Invoke代碼中使用,繪制到Windows的設備上下文。
  • Graphics.FromHwnd() 如上所述,直接繪制到本機窗口。

綜上所述:

  • 使用Paint事件繪制到屏幕
  • 使用PrintPage事件繪制到打印機
  • 使用FromImage()繪制到位圖

Microsoft沒有給出Graphics對象構造函數。 創建實例的唯一方法是通過靜態方法,例如CreateGraphics()或FromImage()。 這就是你的代碼不起作用的原因。 另外,作為旁注,不能繼承Graphics對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM