7

Graphics のオブジェクトを作成しようとすると、次のように動作しないのはなぜですか?

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

(私はそれを機能させたい場合は作成してprivate System.Windows.Forms.Panel Obj;から実行できることを認識しています)CreateGraphics()

Graphics のカスタム コンストラクターを見つけようとしましたが、見つかりませんでした。Microsoft はどこでそれを定義したのですか、またはどのようにブロックしたのですか?

4

3 に答える 3

11

デフォルトのコンストラクターは、他に宣言されたコンストラクターがない場合にのみC#コンパイラーによって作成されます。この場合、すべてのコンストラクターが内部またはプライベートであるように見えます。基本的に、自分で作成するのではなく、画像やコントロールなどから1つを要求したり、ペイントイベントなどで1つ与えられたりします。

于 2010-05-21T14:20:43.473 に答える
3

Graphics がデフォルトのコンストラクターを持つことができないことは直感的に明らかです。描いたものがどこかに見えるようにしたいと常に思っています。デフォルトのコンストラクターは、描画先を選択できませんでした。

Graphics オブジェクトを取得する方法:

  • Graphics.FromImage(). ビットマップに描画します。画像のサイズを変更したり、「キャンバス」を作成したりする場合に一般的です。
  • Control.CreateGraphics(). 画面に直接描画してみましょう。常に間違っています。代わりに次を使用してください。
  • ペイントイベント。e.Graphics 引数を使用すると、画面に描画できます。
  • PrintPage イベント。PrintDocument クラスの場合、e.Graphics は最終的に 1 枚の紙になります。
  • 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 に答える