Winform 鼠标移入效果

    前言:在Winform中,对于鼠标移入效果,大部分人可能会认为不就是分别在鼠标移入和移出事件中,对控件的背景色进行改变吗?

嗯,确实是这样的,但是不知道有没有考虑过下面这个问题:就是这个移入的颜色是手动传入的吗?如果是的话,那么问题就来了。当自定义改变这个控件背景色的时候,移入颜色应做如何的调整?为什么系统自带的按钮可以不传入颜色就全支持呢?如果是自动更改的话?那要如何变化呢?

所以,下面要写的就是,如何根据控件的背景色动态调整鼠标移入的颜色。

86736617e767f6de657a3434fc502f4e.jpeg

    其实原理很简单,可以利用背景颜色的RGB值,对其进行加减操作,就会实现颜色的加深或者减淡,下面看下代码

public static class ColorEx
    {


        /// <summary>
        /// 颜色加深
        /// </summary>
        /// <param name="color"></param>
        /// <param name="deepenFactor">调整因子,值越大颜色越暗</param>
        /// <returns></returns>
        public static Color Deepen(this Color color, int deepenFactor = 50)
        {
            byte R = color.R, G = color.G, B = color.B;
            if (color.R < deepenFactor)
            {
                R += (byte)deepenFactor;
            }
            if (color.G < deepenFactor)
            {
                G += (byte)deepenFactor;
            }
            if (color.B < deepenFactor)
            {
                B += (byte)deepenFactor;
            }
            Color deepenColor = Color.FromArgb(R - deepenFactor, G - deepenFactor, B - deepenFactor);
            return deepenColor;
        }
/// <summary>
        /// 颜色减淡
        /// </summary>
        /// <param name="color"></param>
        /// <param name="dodgeFactor">调整因子,值越大颜色越亮</param>
        /// <returns></returns>
        public static Color Dodge(this Color color, int dodgeFactor = 50)
        {
            byte R = color.R, G = color.G, B = color.B;
            if (color.R + dodgeFactor > 255)
            {
                R -= (byte)dodgeFactor;
            }
            if (color.G + dodgeFactor > 255)
            {
                G -= (byte)dodgeFactor;
            }
            if (color.B + dodgeFactor > 255)
            {
                B -= (byte)dodgeFactor;
            }


            Color dodgeColor = Color.FromArgb(R + dodgeFactor, G + dodgeFactor, B + dodgeFactor);
            return dodgeColor;
        }
    }

上面是写了一个Color的扩展方法,应该如何使用呢?在鼠标移入的时候去获取背景颜色加深后的值就可以自动得到移入的颜色BackColor.Deepen();然后做后续的处理就可以了。

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

de84d9e2b7e1dd29d5c945bea9e5ca46.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm中,我们可以通过添加事件处理程序来实现鼠标移上去显示控件的功能。 首先,选择你想要实现此功能的控件,例如一个按钮或标签。然后,在设计器中双击该控件,进入其事件处理程序。 在事件处理程序中,我们可以使用ToolTip控件来实现鼠标移上去显示的效果。首先在你的窗体上添加一个ToolTip控件,这个控件不可见。然后,在控件的MouseEnter事件中,将ToolTip控件的Show方法与相关的参数进行绑定。 例如,假设我们有一个按钮控件btnButton和一个ToolTip控件toolTip1。我们可以在btnButton的MouseEnter事件处理程序中添加以下代码: private void btnButton_MouseEnter(object sender, EventArgs e) { // 设置ToolTip控件的相关属性 toolTip1.SetToolTip(btnButton, "这是一个按钮控件"); toolTip1.AutoPopDelay = 5000; // 设置ToolTip控件显示的时间 toolTip1.InitialDelay = 1000; // 设置鼠标悬停多久后ToolTip控件显示 toolTip1.ReshowDelay = 500; // 设置鼠标移动后多久ToolTip控件重新显示 // 显示ToolTip控件 toolTip1.Show("这是一个按钮控件", btnButton); } 通过以上代码,当鼠标移动到btnButton按钮上时,会显示一个ToolTip控件,其中显示的文本为"这是一个按钮控件"。同时,我们还可以通过设置AutoPopDelay、InitialDelay和ReshowDelay属性来控制ToolTip控件的显示时间。 需要注意的是,以上代码仅实现了一个按钮控件的鼠标移上去显示的功能。如果你想让其他控件也具有此功能,需要为每个控件分别添加相应的事件处理程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值