WinForm(C#)自定义控件之——RoundButton(圆形按钮)

    最近需要做一个圆形的按钮,去CodeProject找了一下,发现有现成的可用,但不能完全满足我的需求。因此自己试着利用WinForm中的自定义组件功能,制作一个圆形按钮。 

   

下面分两步制作这个按钮。

    A. 目标

    想了一下,即将制作的圆形按钮需要满足几个要求:

        i. 按钮呈现圆形或椭圆形,具体形状参数可调;

        ii. 按钮用不同的填充色来响应鼠标进入或者离开事件;

        iii. 按钮通过改变边的颜色来显示是否获取焦点状态;

        iv. 按钮通过改变填充色的亮度来区分按钮是否按下。

    B. 实现代码

    具体的制作思路大致如下:

        i. 成员变量:

             (a).按钮绘制区域矩形 Rectangle rect;

             (b).鼠标书否进入 bool buttonEnter;

             (c).鼠标是否按下 bool buttonPressed;

             (d).按钮是否被点击 bool buttonClicked。

        ii. 属性:

             (a).形状;

             (b).填充色;

             (c).边框。

        iii. 构造函数

             (a).按钮风格设定;

             (b).成员变量初始化;

        iv. 部分函数重写

             (a).控件绘制OnPaint;

             (b).鼠标相关函数;

        v. 自定义函数

             (a).图案填充;

             (b).绘制边框;

             (c).调整控件大小;

    代码如下:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;

using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace 章鱼.Forms
{
    public partial class RoundButton : Button
    {
        #region --成员变量--

        RectangleF rect = new RectangleF();//控件矩形
        bool mouseEnter;//鼠标是否进入控件区域的标志
        bool buttonPressed;//按钮是否按下
        bool buttonClicked;//按钮是否被点击
        #endregion

        #region --属性--

        #region 形状

        /// <summary>
        /// 设置或获取圆形按钮的圆的边距离方框边的距离
        /// </summary>
        [Browsable(true), DefaultValue(2)]
        [Category("Appearance")]
        public int DistanceToBorder { get; set; }

        #endregion

        #region 填充色

        /// <summary>
        /// 获取或设置按钮主体颜色
        /// </summary>
        /// <value>
  • 8
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值