内在コントロール
更新 : 2007 年 11 月
ユーザー コントロールを構成する各コントロールは "内在コントロール" と呼ばれます。内在コントロールでは、カスタム グラフィック レンダリングに関する柔軟性が比較的低くなります。Windows フォーム コントロールはすべて、独自の OnPaint メソッドを使用して独自のレンダリングを処理します。このメソッドはプロテクトされているため、開発者がアクセスすることはできません。したがって、コントロールが描画されるときに、このメソッドが実行されないようにすることはできません。ただし、内在コントロールの外観に影響するコードを追加できないという意味ではありません。追加のレンダリングは、イベント ハンドラを追加することで実現できます。たとえば、MyButton という名前のボタンを使用して UserControl を編集するとします。Button クラスによって提供される外観に独自のレンダリングを追加する場合は、次のようなコードをユーザー コントロールに追加します。
Public Sub MyPaint(ByVal sender as Object, e as PaintEventArgs) Handles _
MyButton.Paint
'Additional rendering code goes here
End Sub
// Add the event handler to the button's Paint event.
MyButton.Paint +=
new System.Windows.Forms.PaintEventHandler (this.MyPaint);
// Create the custom painting method.
protected void MyPaint (object sender,
System.Windows.Forms.PaintEventArgs e)
{
// Additional rendering code goes here.
}
// Add the event handler to the button's Paint event.
MyButton.add_Paint(new
System.Windows.Forms.PaintEventHandler(this.MyPaint));
// Create the custom painting method.
protected void MyPaint(System.Object sender,
System.Windows.Forms.PaintEventArgs e)
{
// Additional rendering code goes here.
}
メモ : |
---|
TextBox など、一部の Windows フォーム コントロールは、直接 Windows によって描画されます。そのような場合、OnPaint メソッドは呼び出されないため、例に示したコードも呼び出されません。 |
このコードは、MyButton.Paint イベントが実行されるたびに実行されるメソッドを作成して、コントロールに独自のグラフィカル表示を追加します。これは MyButton.OnPaint の実行を妨げるものではなく、カスタム描画に加えて、ボタンによって通常実行される描画もすべて実行されます。GDI+ テクノロジとカスタム レンダリングの詳細については、「GDI+ によるグラフィカル イメージの作成」を参照してください。コントロールに固有の表示を行うための最善の方法は、継承したコントロールを作成して、それに対するカスタム レンダリング コードを記述することです。詳細については、「ユーザー描画コントロール」を参照してください。
参照
処理手順
方法 : 描画する Graphics オブジェクトを作成する