OnPaint メソッドのオーバーライドOverriding the OnPaint Method

.NET Framework で定義されているすべてのイベントをオーバーライドするための基本的な手順が同じと、次の一覧にまとめます。The basic steps for overriding any event defined in the .NET Framework are identical and are summarized in the following list.

継承されたイベントをオーバーライドするにはTo override an inherited event

  1. 保護されたオーバーライドOn EventNameメソッド。Override the protected OnEventName method.

  2. 呼び出す、 On EventNameから、オーバーライドされた基底クラスのメソッドOn EventNameメソッド、デリゲートを登録するため、イベントを受信します。Call the OnEventName method of the base class from the overridden OnEventName method, so that registered delegates receive the event.

Paintイベント詳細についてはここですべての Windows フォーム コントロールをオーバーライドする必要がありますので、Paintイベントから継承したControlします。The Paint event is discussed in detail here because every Windows Forms control must override the Paint event that it inherits from Control. 基本Controlクラスの派生コントロールを描画する必要がある方法がわからないし、描画ロジックを提供しない、OnPaintメソッド。The base Control class does not know how a derived control needs to be drawn and does not provide any painting logic in the OnPaint method. OnPaintメソッドのControlは単に、Paintに登録されているイベント レシーバーのイベント。The OnPaint method of Control simply dispatches the Paint event to registered event receivers.

サンプルを実行している場合方法。単純な Windows フォーム コントロール開発、オーバーライドする例を見てきました、OnPaintメソッド。If you worked through the sample in How to: Develop a Simple Windows Forms Control, you have seen an example of overriding the OnPaint method. 次のコード フラグメントは、そのサンプルから取得されます。The following code fragment is taken from that sample.

Public Class FirstControl  
   Inherits Control  
  
   Public Sub New()  
   End Sub  
  
   Protected Overrides Sub OnPaint(e As PaintEventArgs)  
      ' Call the OnPaint method of the base class.  
      MyBase.OnPaint(e)  
      ' Call methods of the System.Drawing.Graphics object.  
      e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), RectangleF.op_Implicit(ClientRectangle))  
   End Sub  
End Class   
public class FirstControl : Control {  
   public FirstControl() {}  
   protected override void OnPaint(PaintEventArgs e) {  
      // Call the OnPaint method of the base class.  
      base.OnPaint(e);  
      // Call methods of the System.Drawing.Graphics object.  
      e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle);  
   }   
}   

PaintEventArgsクラスにはデータが含まれています、Paintイベント。The PaintEventArgs class contains data for the Paint event. 次のコードに示すように 2 つのプロパティがあります。It has two properties, as shown in the following code.

Public Class PaintEventArgs  
   Inherits EventArgs  
   ...  
   Public ReadOnly Property ClipRectangle() As System.Drawing.Rectangle  
      ...  
   End Property  
  
   Public ReadOnly Property Graphics() As System.Drawing.Graphics  
      ...  
   End Property   
   ...  
End Class  
public class PaintEventArgs : EventArgs {  
...  
    public System.Drawing.Rectangle ClipRectangle {}  
    public System.Drawing.Graphics Graphics {}  
...  
}  

ClipRectangle 四角形を描画するのには、およびGraphicsプロパティを指す、Graphicsオブジェクト。ClipRectangle is the rectangle to be painted, and the Graphics property refers to a Graphics object. 内のクラス、System.Drawing名前空間は、管理の機能へのアクセスを提供するクラスをGDI+GDI+、新しい Windows グラフィックス ライブラリ。The classes in the System.Drawing namespace are managed classes that provide access to the functionality of GDI+GDI+, the new Windows graphics library. Graphicsオブジェクト ポイント、文字列、線、円弧、省略記号、およびその他の多数の図形を描画するメソッドがあります。The Graphics object has methods to draw points, strings, lines, arcs, ellipses, and many other shapes.

コントロールを呼び出すそのOnPaintメソッド ビジュアル表示を変更する必要があるたびにします。A control invokes its OnPaint method whenever it needs to change its visual display. このメソッドが生成されます、Paintイベント。This method in turn raises the Paint event.

関連項目See also