共用方式為


覆寫 OnPaint 方法

覆寫 .NET Framework 中任何所定義事件的基本步驟完全相同,並摘要於下列清單中。

若要覆寫繼承的事件

  1. 覆寫受保護的 OnEventName 方法。

  2. 從覆寫的 OnEventName 方法呼叫基底類別的 OnEventName 方法,因此,註冊的委派會收到事件。

這裡會詳細討論 Paint 事件,因為每個 Windows Forms 控制項都必須覆寫繼承自 ControlPaint 事件。 基底 Control 類別不知道需要如何繪製衍生控制項,而且不會在 OnPaint 方法中提供任何繪製邏輯。 ControlOnPaint 方法只會將 Paint 事件分派至已註冊的事件接收器。

如果您完成如何:開發簡單的 Windows Forms 控制項中的範例,則會看到覆寫 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 事件的資料。 其具有兩個屬性,如下列程式碼中所示。

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 命名空間中的類別是受控類別,其可存取 GDI+ (新的 Windows 圖形庫) 的功能。 Graphics 物件具有可繪製點、字串、線條、弧線、橢圓形和其他許多圖形的方法。

只要控制項需要變更其視覺效果,就會叫用其 OnPaint 方法。 此方法接著會引發 Paint 事件。

另請參閱