zoukankan      html  css  js  c++  java
  • 贡献自绘CheckBox代码

       1: // 功能:复选框
       2: // 描述:
       3: // 编码:温伟鹏
       4: // 日期:12/18/2008 11:48:34
       5:  
       6: using System;
       7: using System.Collections.Generic;
       8: using System.Text;
       9: using System.ComponentModel;
      10: using System.Drawing;
      11: using System.Windows.Forms;
      12: using System.Drawing.Drawing2D;
      13: using Esint.UI.Common;
      14:  
      15: namespace Esint.UI.WinFormUI
      16: {
      17:     [ToolboxItem(true)]
      18:     public class CheckBox:ControlBase
      19:     {
      20:         /// <summary>
      21:         /// Checked属性修改事件
      22:         /// </summary>
      23:         public event EventHandler CheckedChanged;
      24:  
      25:         private bool isChecked;
      26:         /// <summary>
      27:         /// 获取或设置控件是否选中
      28:         /// </summary>
      29:         [Category("Appearance"), DefaultValue(false), Description("获取或设置控件是否选中")]
      30:         public bool Checked
      31:         {
      32:             get {
      33:                 return this.isChecked;
      34:             }
      35:             set {
      36:                 isChecked = value;
      37:                 
      38:                 this.Refresh();
      39:  
      40:                 if (CheckedChanged != null)
      41:                 {
      42:                     CheckedChanged(this, null);
      43:                 }
      44:             }
      45:         }
      46:  
      47:         public CheckBox()
      48:             :base()
      49:         {
      50:         }
      51:  
      52:         protected override void InitializeBorder()
      53:         {
      54:             base.InitializeBorder();
      55:  
      56:             this.Border.BorderColor = Color.Yellow;
      57:             this.Border.BorderWidth = 2f;
      58:             this.Border.CornerRound = 4;
      59:         }
      60:  
      61:         protected override void InitializeStyles()
      62:         {
      63:             this.SetStyle(ControlStyles.Selectable, true);
      64:  
      65:             base.InitializeStyles();
      66:         }
      67:  
      68:         protected override void InitializeSelf()
      69:         {
      70:             base.InitializeSelf();
      71:  
      72:             this.Name = "CheckBox";
      73:             this.MinimumSize = new Size(24, 24);
      74:             this.Text = "CheckBox";
      75:  
      76:             Graphics g = Graphics.FromHwnd(Handle);
      77:             Size txtSize = g.MeasureString(Text, Font).ToSize();
      78:  
      79:             this.MinimumSize = new Size(txtSize.Width + 28, 24);
      80:  
      81:             g.Dispose();
      82:  
      83:             this.Size = this.MinimumSize;
      84:         }
      85:  
      86:         protected override void OnMouseClick(System.Windows.Forms.MouseEventArgs e)
      87:         {
      88:             if (e.Button == MouseButtons.Left)
      89:             {
      90:                 //this.isFocused = true;
      91:  
      92:                 Checked = !Checked;
      93:             }
      94:  
      95:             base.OnMouseClick(e);
      96:         }
      97:  
      98:         protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs e)
      99:         {
     100:             //base.OnPaintBackground(e);
     101:  
     102:             if (!Visible)
     103:             {
     104:                 return;
     105:             }
     106:  
     107:             Graphics g = e.Graphics;
     108:             g.SmoothingMode = SmoothingMode.AntiAlias;
     109:  
     110:             g.Clear(BackColor);
     111:         }
     112:  
     113:         protected override void OnPaintBorder(System.Windows.Forms.PaintEventArgs e)
     114:         {
     115:             //base.OnPaintBorder(e);
     116:  
     117:             if (!Visible)
     118:             {
     119:                 return;
     120:             }
     121:  
     122:             Graphics g = e.Graphics;
     123:             g.SmoothingMode = SmoothingMode.AntiAlias;
     124:  
     125:             Rectangle radioRect = new Rectangle(
     126:                 2, (int)((Height - 18 + Border.BorderWidth) / 2),
     127:                 (int)(18 - Border.BorderWidth), (int)(18 - Border.BorderWidth));
     128:             GraphicsPath radioPath = DrawHelper.CreateRoundRectangle(radioRect, Border.CornerRound);
     129:  
     130:             Pen borderPen = new Pen(new SolidBrush(Border.BorderColor),
     131:                 Border.BorderWidth);
     132:  
     133:             g.DrawPath(borderPen, radioPath);
     134:  
     135:             if (radioPath != null) { radioPath.Dispose(); }
     136:         }
     137:  
     138:         protected override void OnPaintContent(System.Windows.Forms.PaintEventArgs e)
     139:         {
     140:             //base.OnPaintContent(e);
     141:  
     142:             if (!Visible)
     143:             {
     144:                 return;
     145:             }
     146:  
     147:             Graphics g = e.Graphics;
     148:             g.SmoothingMode = SmoothingMode.AntiAlias;
     149:  
     150:             Size txtSize = g.MeasureString(Text, Font).ToSize();
     151:  
     152:             PointF txtLocation = new PointF(24, (Height - txtSize.Height) / 2);
     153:             //是否可用
     154:             if (Enabled)
     155:             {
     156:                 //检测Text属性是否为空
     157:                 if (!Utils.IsNullorEmpty(Text))
     158:                 {
     159:                     g.DrawString(Text, Font, new SolidBrush(ForeColor), txtLocation);
     160:                     //焦点
     161:                     if (Focused)
     162:                     {
     163:                         Point txtLocal = new Point(24, (int)((Height - txtSize.Height) / 2));
     164:                         Rectangle txtRect = new Rectangle(txtLocal, txtSize);
     165:                         txtRect.Width -= 2;
     166:                         ControlPaint.DrawFocusRectangle(g, txtRect);
     167:                     }
     168:                 }
     169:                 //是否选中
     170:                 if (Checked)
     171:                 {
     172:                     GraphicsPath checkedPath = new GraphicsPath(FillMode.Winding);
     173:                     checkedPath.AddLine(new Point(2, Height / 2), new Point(10, Height / 2 + 8));
     174:                     checkedPath.AddLine(new Point(19, (Height - 18) / 2), new Point(18, (Height - 18) / 2));
     175:                     checkedPath.AddLine(new Point(18, (Height - 18) / 2), new Point(9, Height / 2 + 2));
     176:                     checkedPath.AddLine(new Point(9, Height / 2 + 2), new Point(2, Height / 2));
     177:                     checkedPath.CloseFigure();
     178:  
     179:                     g.FillPath(new SolidBrush(Border.BorderColor), checkedPath);
     180:  
     181:                     if (checkedPath != null) { checkedPath.Dispose(); }
     182:                 }
     183:             }
     184:             else
     185:             {
     186:                 //检测Text属性是否为空
     187:                 if (!Utils.IsNullorEmpty(Text))
     188:                 {
     189:                     txtLocation.X++;
     190:                     txtLocation.Y++;
     191:                     g.DrawString(Text, Font, new SolidBrush(Color.White), txtLocation);
     192:                     txtLocation.X--;
     193:                     txtLocation.Y--;
     194:                     g.DrawString(Text, Font, new SolidBrush(Color.FromArgb(128, 128, 128)), txtLocation);
     195:                 }
     196:             }
     197:         }
     198:     }
     199: }
       1: /// <summary>
       2: /// 判断给定的字符串是否为空
       3: /// </summary>
       4: /// <param name="text"></param>
       5: /// <returns></returns>
       6: public static bool IsNullorEmpty(string text)
       7: {
       8:     if (text == null || text.Trim() == string.Empty)
       9:         return true;
      10:     else
      11:         return false;
      12: }
  • 相关阅读:
    关于程序员认知和编程学习,没有任何一篇文章会讲得如此透彻
    Found 1 slaves: Use of uninitialized value in printf at /usr/local/percona-toolkit/bin/pt-online-schema-change line 8489
    alert 多语言的处理
    #!/bin/sh & #!/bin/bash区别
    mysql 常用
    java.io.FileNotFoundException
    struts1 & jquery form 文件异步上传
    简单的数据库连接池实例(java语言)
    null id in com.rocky.** entry 错误处理
    java unsupported major.minor version 51.0 解决
  • 原文地址:https://www.cnblogs.com/wpwen/p/1366785.html
Copyright © 2011-2022 走看看