zoukankan      html  css  js  c++  java
  • 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;
    }

    }
    }

  • 相关阅读:
    为什么lambda中用到的局部变量需要为final
    ubuntu安装idea之后字体不友好
    mysql存表情出错的解决方案(类似xF0x9Fx98x86xF0x9F)
    CentOS7.4 安装mysql
    mysql修改时区
    发个自己写的微信小游戏
    算法:IP分割问题(python实现)
    教你用Python抓取百度翻译
    教你用Python遍历指定目录下的所有文件以及文件的过滤
    教你用Python做个简单的加密程序(还基础什么呀,直接来练习吧,带源码)
  • 原文地址:https://www.cnblogs.com/chengyihardworking/p/12759766.html
Copyright © 2011-2022 走看看