程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第五講 圖形開發基礎篇(3)

C#發現之旅第五講 圖形開發基礎篇(3)

編輯:關於C語言

ClipRectangle表示剪切矩形,一般情況下,控件 重新繪制內容時是不需要重寫所有的內容,而是繪制一部分內容,該參數就指明控件中那個 部分是需要重新繪制的,該區域以外的界面是不需要繪制,因此該參數是優化圖形界面軟件 性能的基礎,在這裡,由於橢圓形按鈕繪制的內容少,界面結構簡單,因此不需要優化,不 需要使用ClipRectangle參數。

我們重寫的OnPaint函數代碼如下

protected override void OnPaint(PaintEventArgs e)
{
   base.OnPaint (e);
  // 創建橢圓路徑
  using( System.Drawing.Drawing2D.GraphicsPath path =
        new System.Drawing.Drawing2D.GraphicsPath())
  {
    path.AddEllipse( 0 , 0 , this.ClientSize.Width -1 , this.ClIEntSize.Height -1 );
    // 填充背景色
    using( SolidBrush b = new SolidBrush(
           bolMouseHoverFlag ? this.HoverBackColor : this.ButtonBackColor ))
     {
      e.Graphics.FillPath( b , path );
    }
     // 繪制邊框
    using( Pen p = new Pen(
           bolMouseHoverFlag ? this.HoverBorderColor : this.BorderColor , 2 ))
     {
      e.Graphics.DrawPath( p , path );
    }
  }
  if( this.Caption != null )
  {
    // 繪制文本
     using( StringFormat f = new StringFormat())
    {
      // 水平居中對齊
      f.Alignment = System.Drawing.StringAlignment.Center ;
      // 垂直居中對齊
      f.LineAlignment = System.Drawing.StringAlignment.Center ;
      // 設置為單行文本
      f.FormatFlags = System.Drawing.StringFormatFlags.NoWrap ;
       // 繪制文本
      using( SolidBrush b = new SolidBrush( this.ForeColor ))
      {
        e.Graphics.DrawString (
          this.Caption ,
          this.Font ,
          b ,
          new System.Drawing.RectangleF (
          0 ,
          0 ,
           this.ClIEntSize.Width ,
          this.ClIEntSize.Height ) ,
          f );
      }
    }
  }
}//protected override void OnPaint(PaintEventArgs e)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved