次の方法で共有


OnPaint メソッドのオーバーライド

更新 : 2007 年 11 月

.NET Framework で定義されているイベントをオーバーライドするための基本的な手順はすべてのイベントで同一です。次にこの手順を示します。

継承したイベントをオーバーライドするには

  1. プロテクト メソッド OnEventName をオーバーライドします。

  2. オーバーライドされた OnEventName メソッドから基本クラスの OnEventName メソッドを呼び出します。その結果、登録デリゲートがイベントを受信します。

すべての Windows フォーム コントロールでは Control から継承する Paint イベントをオーバーライドする必要があるため、Paint イベントについて詳しく説明します。基本の Control クラスは、派生するコントロールの描画方法については認識せず、OnPaint メソッドでは描画ロジックを提供しません。ControlOnPaint メソッドは、Paint イベントを登録イベント レシーバへディスパッチします。

方法 : シンプルな Windows フォーム コントロールを開発する のサンプルで作業すると、OnPaint メソッドのオーバーライド例を確認できます。このサンプルの一部であるコード片を次に示します。

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 イベントのデータが格納されます。次のコードに示すように、PaintEventArgs クラスには 2 つのプロパティがあります。

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 を参照します。System.Drawing 名前空間のクラスは、新しい Windows グラフィック ライブラリである GDI+ の機能へのアクセスを提供するマネージ クラスです。Graphics オブジェクトには、ポイント、文字列、線、曲線、楕円などのさまざまな形状を描画するメソッドがあります。

ビジュアル表示を変更する必要がある場合は、コントロールは常に OnPaint メソッドを呼び出します。呼び出された OnPaint メソッドは Paint イベントを発生させます。

参照

概念

Windows フォーム コントロールのレンダリング

Windows フォーム コントロールのイベントの定義

その他の技術情報

イベントの処理と発生