• winform 自定义控件圆按钮插件


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WGMF.TMS.CLIENT.ClientUI
    {
    public partial class RoundButton : Button
    {
    private int radius;//半径

    //圆形按钮的半径属性
    [CategoryAttribute("布局"), BrowsableAttribute(true), ReadOnlyAttribute(false)]
    public int Radius
    {
    set
    {
    radius = value;
    this.Height = this.Width = Radius;
    }
    get
    {
    return radius;
    }
    }

    private Image imageEnter;
    [CategoryAttribute("外观"), BrowsableAttribute(true), ReadOnlyAttribute(false)]
    public Image ImageEnter
    {
    set
    {
    imageEnter = value;
    }
    get
    {
    return imageEnter;
    }
    }

    private Image imageNormal;
    [CategoryAttribute("外观"), BrowsableAttribute(true), ReadOnlyAttribute(false)]
    public Image ImageNormal
    {
    set
    {
    imageNormal = value;
    BackgroundImage = imageNormal;
    }
    get
    {
    return imageNormal;
    }
    }

    //以下代码用于在VS中隐藏BackgroundImage属性,使得只能通过Diameter设置Height和Width
    [BrowsableAttribute(false)]
    public new Image BackgroundImage
    {
    get
    {
    return base.BackgroundImage;
    }
    set
    {
    base.BackgroundImage = value;

    }
    }

    //以下代码用于在VS中隐藏Size属性,使得只能通过Diameter设置Height和Width
    [BrowsableAttribute(false)]
    public new Size Size
    {
    get
    {
    return base.Size;
    }
    set
    {
    base.Size = value;

    }
    }

    public RoundButton()
    {
    Radius = 64;
    this.Height = this.Width = Radius;
    this.FlatStyle = FlatStyle.Flat;
    this.FlatAppearance.BorderSize = 0;
    this.BackgroundImage = imageEnter;
    this.BackgroundImageLayout = ImageLayout.Stretch;
    }

    //重写OnPaint
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
    base.OnPaint(e);
    System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
    path.AddEllipse(0, 0, Radius, Radius);
    this.Region = new Region(path);
    }

    //重写OnMouseEnter
    //protected override void OnMouseEnter(EventArgs e)
    //{
    // Graphics g = this.CreateGraphics();
    // g.DrawEllipse(new Pen(Color.Blue), 0, 0, this.Width, this.Height);
    // g.Dispose();
    //}

    //重写OnSizeChanged
    protected override void OnSizeChanged(EventArgs e)
    {
    base.OnSizeChanged(e);
    if(Height != Radius)
    {
    Radius = Width = Height;
    }
    else if(Width != Radius)
    {
    Radius = Height = Width;
    }

    }

    //重写OnMouseEnter
    protected override void OnMouseEnter(EventArgs e)
    {
    base.OnMouseEnter(e);
    BackgroundImage = ImageEnter;
    }

    //重写OnMouseLeave
    protected override void OnMouseLeave(EventArgs e)
    {
    base.OnMouseLeave(e);
    BackgroundImage = ImageNormal;
    }

    }
    }

  • 相关阅读:
    耐心
    百度年会
    聊聊今年的春节联欢晚会
    网速调查
    热烈欢迎两位园友加盟
    遥远的路
    博客园博客程序架构设计图初稿
    [公告]社区与博客实现了登录整合
    博客园上海俱乐部第二次活动继续报道
    [收藏]《观察与思考》:相信中国,寻找下一个比尔·盖茨
  • 原文地址:https://www.cnblogs.com/chengyihardworking/p/12759766.html
Copyright © 2020-2023  润新知