.net圓形按鈕的實現

一.設計時效果

二.運行時效果

三.簡單的實現思路

  因爲在最近的項目中要用到類似效果的控件,所以就索性做了一個.原理很簡單,實現的代碼不超過250行.繼承control類,然後在onpaint方法中來繪製按鈕效果,指定Region,同時,要在Onmousedown,Onmouseenter,Onmouseup,Onmouseleave,OnResize,OnLostFocus等方法中做一些相應的處理.

四.部分源代碼 

 



 protected override void OnLostFocus(EventArgs e)
        
{
            
base.OnLostFocus(e);
            
this._isEnter = false;
            
this.Invalidate();
        }

        
protected override void OnMouseDown(MouseEventArgs e)
        
{
            
base.OnMouseDown(e);
            
this.Capture = true;
            _isEnter 
= true;
            
this._mouseStyle = MouseStyle.MouseDown;
            
this.Invalidate();
            
if (e.Button == MouseButtons.Left)
            
{
                
if (this.ButtonClick != null)
                    
this.ButtonClick();
            }

        }

        
protected override void OnMouseHover(EventArgs e)

          y=''none''; document.getElementById(''_657_787_Open_Text'').style.display=''none''; document.getElementById(''_657_787_Closed_Image'').style.display=''inline''; document.getElementById(''_657_787_Closed_Text'').style.display=''inline'';" align="top" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" />        {
            
base.OnMouseHover(e);
            
this._mouseStyle = MouseStyle.MouseHover;
            
this.Invalidate(); 
        }

        
protected override void OnMouseUp(MouseEventArgs e)
        
{
            
base.OnMouseUp(e);
            
this._mouseStyle = MouseStyle.MouseHover;
            
this.Invalidate(); 
        }

        
protected override void OnMouseEnter(EventArgs e)
        
{
            
base.OnMouseEnter(e);
            
this._mouseStyle = MouseStyle.MouseHover;
            
this.Invalidate(); 
        }

        protected override void OnMouseLeave(EventArgs e)
        
{
            
base.OnMouseLeave(e);
            
this._mouseStyle = MouseStyle.None;
            
this.Invalidate(); 
        }

        
protected override void OnResize(EventArgs e)
        
{
            
base.OnResize(e);
            
this.Height = this.Width;
        }

 

發佈了21 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章