自己動手用c#寫控制元件(下) (轉)

worldblog發表於2007-12-12
自己動手用c#寫控制元件(下) (轉)[@more@]

因為我們這個是實現背景漸變及文字填充,所以overr Paint事件以完成自畫。:namespace prefix = o ns = "urn:schemas--com::office" />

為了完成override,現在以下的準備工作(寫幾個在Paint事件用的著的事件).

//使用角度的方法漸近重畫Button

    private void DrawButtonWithAngle(Graphics g)

  {

    LinearGradientBrush brush=new LinearGradientBrush(new Rectangle(0,0,this.Width,this.Height),froColor,backColor,angle);

    dbg.FillRectangle(brush,0,0,this.Width,this.Height);

    brush.Dispose();

  }

  ////使用的方法漸近重畫Button

    private void DrawButtonWithMode(Graphics dbg,LinearGradientMode Mode)

  {

    LinearGradientBrush brush=new LinearGradientBrush(new Rectangle(0,0,this.Width,this.Height),froColor,backColor,Mode);

    dbg.FillRectangle(brush,0,0,this.Width,this.Height);

    brush.Dispose();

  }

  //重畫Button的文字(Text),不使用圖案填充

    private void DrawButtonText(Graphics dbg)

  {

    StringFormat format=new StringFormat();

    format.LineAlignment=StringAlignment.Center;

    format.Alignment=StringAlignment.Center;

    dbg.DrawString(this.Text,this.Font,new SolidBrush(this.ForeColor),new Rectangle(0,0,this.Width,this.Height),format);

  }

    //override DrawButtonText,使之可以用圖案填充文字

    private  void DrawButtonText(Graphics dbg, HatchStyle hs)

  {

    StringFormat format=new StringFormat();

    format.LineAlignment=StringAlignment.Center;

    format.Alignment=StringAlignment.Center;

    dbg.DrawString(this.Text,this.Font,new HatchBrush(hs,this.ForeColor,Color.Aquamarine),new Rectangle(0,0,this.Width,this.Height),format);

  }

好了,現在開始重寫Paint事件了.

protected override void OnPaint(PaintEventArgs pe)

  {

 

    Graphics g=pe.Graphics;

    base.OnPaint(pe); //父控制元件的方法

    if(isUseFloat==true) //假如使用角度控制漸變的角度

    DrawButtonWithAngle(g);

    if(isUseFloat==false)

    DrawButtonWithMode(g,mode);

    if(isUseStyle==true)//假如使用圖案填充文字

    DrawButtonText(g,hatchStyle);

    else

    DrawButtonText(g);

  }

好了,現在大功告成了,進行儲存,生成。

建立測試專案

1.  在“”選單上,指向“新增專案”,然後單擊“新建專案”以開啟“新增新專案”對話方塊。

2.  選擇“Visual 專案”節點,然後單擊“ 應用”。

3.  在“名稱”框中鍵入 Test

4.  在解決方案中,右擊測試專案的“引用”節點,然後從快捷選單中選擇“新增引用”以顯示“新增引用”對話方塊。

5.  單擊標記為“專案”的選項卡。

6.  雙擊 LinearGradientButtonLib 專案,並注意該專案此時出現在“選定的”窗格中。

新增引用後,應將新控制元件新增到工具箱。如果您的控制元件已經出現在工具箱中,則應該跳過下一節。

將控制元件新增到工具箱

1.  右擊工具箱,然後從快捷選單中選擇“自定義工具箱”。

“自定義工具箱”對話方塊開啟。

2.  選擇“ 元件”選項卡並單擊“瀏覽”。瀏覽到 LinearGradientButtonLibbinde 資料夾並選擇 LinearGradientButtonLib.dll。

LinearGradientButton 出現在“自定義工具箱”對話方塊的元件列表中。

3.  在“自定義工具箱”對話方塊中,單擊 LinearGradientButton 旁的框並關閉視窗。

LinearGradientButton 被新增到選定的工具箱的選項卡上。

將控制元件新增到窗體

1.  在解決方案資源管理器中,右擊“Form1.cs”,然後從快捷選單中選擇“檢視設計器”。

2.  在工具箱中,向下滾動直到到達標記為 LinearGradientButton 的圖示。雙擊該圖示。

窗體上顯示一個“LinearGradientButton”。

3.  右擊“LinearGradientButton”並從快捷選單中選擇“屬性”。

4.  在“屬性”視窗中檢查該控制元件的屬性。注意,它們與標準按鈕公開的屬性相同,不同的是多了我們自己加入的一些屬性

5.  設定本控制元件的前景色及背景色,然後可以選擇是否填充文字,是使用角度還是使用設定值進行漸變角度的變化。

6.  從“”選單中選擇“啟動”。 出現 Form1

誰如果需要原始碼的話,請給我發信.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章