自己動手用c#寫控制元件(下) (轉)
因為我們這個是實現背景漸變及文字填充,所以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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自己動手用c#寫控制元件(上) (轉)C#控制元件
- 嘗試自己動手用react來寫一個分頁元件React元件
- C#常用控制元件縮寫C#控制元件
- 自己動手寫Web自動化測試框架(3):操縱Web控制元件Web框架控制元件
- 自己動手寫Web自動化測試框架(4):驗證Web控制元件Web框架控制元件
- 自己動手寫PromisePromise
- C# Winform常用控制元件縮寫大全C#ORM控制元件
- 分享一個自己寫的C# SqlHelperC#SQL
- 開發自己的Excell控制元件 (轉)Excel控制元件
- 徒手用 Docker 構建自己的 PHP 開發環境DockerPHP開發環境
- 自己動手寫類似酷狗播放器(3)_Slider控制元件使用播放器IDE控制元件
- 徒手用 Go 寫個 Redis 伺服器(Godis)GoRedis伺服器
- 自己編寫JAVA環境下的檔案上傳元件 (轉)Java元件
- C#實現控制元件陣列 (轉)C#控制元件陣列
- 自己動手寫一個 SimpleVueVue
- 自己動手寫 PHP 框架(一)PHP框架
- C#自定義控制元件—流動管道C#控制元件
- 動態移動控制元件 (轉)控制元件
- C#自定義控制元件—轉換開關C#控制元件
- C#自定義控制元件—旋轉按鈕C#控制元件
- 自己動手寫SQL執行引擎SQL
- 自己編寫安裝製作程式 (轉)
- C#控制元件C#控制元件
- 自己動手寫Web自動化測試框架Web框架
- 自己動手寫basic直譯器 一
- 自己動手寫事件匯流排(EventBus)事件
- 自己動手寫一個持久層框架框架
- 自己動手寫Vector【Cherno C++教程】C++
- iOS開發之將自己寫的小控制元件釋出到Github上iOS控制元件Github
- 我握f一下ReGet的手用----C-pen
- 自己動手寫Android資料庫框架Android資料庫框架
- WPF啟動流程-自己手寫Main函式AI函式
- 自己動手寫個 Android客戶端Android客戶端
- 自己動手寫RecyclerView的下拉重新整理View
- 自己動手寫DB資料庫框架(增)資料庫框架
- 自己動手寫RecyclerView的上拉載入View
- AOP - 自己寫 JDK 動態代理增強 beanJDKBean
- 分享一個 C# Winfrom 下的 OutlookBar 控制元件的使用C#控制元件