共用方式為


組成控制項

進行自訂圖形轉譯時,構成使用者控制項的控制項或所謂的「組成控制項」較不具彈性。 所有 Windows Forms 控制項都會透過自己的 OnPaint 方法來處理自己的轉譯。 因為這個方法受到保護,所以開發人員無法存取它,因此無法在繪製控制項時防止它執行。 不過,這不表示您無法新增程式碼來影響組成控制項的外觀。 新增事件處理常式,即可完成其他轉譯。 例如,假設您正在撰寫 UserControl,並且搭配名為 MyButton 的按鈕。 如果您除了 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.  
}  

注意

部分 Windows Forms 控制項 (例如 TextBox) 是由 Windows 直接繪製。 在這些情況下,絕不會呼叫 OnPaint 方法,因此絕不會呼叫上述範例。

這會建立每次執行 MyButton.Paint 事件時都會執行的方法,進而將其他圖形呈現新增至控制項。 請注意,這並不會防止執行 MyButton.OnPaint,因此,除了您的自訂繪製之外,仍然會執行通常透過按鈕所執行的所有繪製。 如需 GDI+ 技術和自訂轉譯的詳細資訊,請參閱使用 GDI+ 建立圖形影像。 如果您想要有控制項的唯一呈現,則最好的做法就是建立繼承的控制項,以及撰寫其自訂轉譯程式碼。 如需詳細資訊,請參閱使用者自訂描繪控制項

另請參閱