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