製作一個不規則的控制元件(Non-rectangular Controls)相對
不規則視窗較為複雜一點,但也只是要自己多敲一些代碼而已,在示範中會運用GraphicsPath類別與控制元件的Paint事件來製作一對鬥雞眼按鈕:
- 首先在Form中加入一個按鈕(Button)元件,在此把該按鈕命名為CustomButton,並把Text顯示文字清空(清空文字只是為了讓外觀較為乾淨,若有需要可以設定要顯示的文字內容),按鈕大小設定為100x50。
- 幫此按鈕註冊Paint事件,在此事件中運用GraphicsPath生成一個物件並設定欲顯示圖樣路徑,最將此物件指定給按鈕的Region屬性即可。
private void CustomButton_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath myGraphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
myGraphicsPath.AddEllipse(new Rectangle(0, 0, 50, 50));
myGraphicsPath.AddEllipse(new Rectangle(30, 35, 10, 10));
myGraphicsPath.AddEllipse(new Rectangle(50, 0, 50, 50));
myGraphicsPath.AddEllipse(new Rectangle(60, 35, 10, 10));
CustomButton.BackColor = Color.Brown;
CustomButton.FlatStyle = FlatStyle.Flat;
CustomButton.FlatAppearance.BorderSize = 0;
CustomButton.Region = new Region(myGraphicsPath);
}
補充:
- GraphicsPath內建多種預設圖形,如:圓形、舉行、三角形,甚至是文字等,因此可以輕易透過疊加方式繪出各種客製化的形狀。
- 在GraphicsPath中的圖形疊加具有互斥或的效果,意思是如果兩個圖案有重疊到的區域會呈現挖空效果,但如果又有第三張圖片重疊上去,則三張圖片重疊的區域會被顯示。
補充一下,避免按鈕不斷重畫可以避免影響其他控制元件的顯示:)
回覆刪除