加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

另类思路解决textbox不支持(半)透明背景颜色的问题

发布时间:2020-12-16 22:25:00 所属栏目:大数据 来源:网络整理
导读:由于net平台的普及问题 为了尽可能的增加用户使用量 很多应用基于2.0写的 所以不考虑wpf 众所周知 winform 的textbox的颜色不能使用 带有 Alpha 属性的颜色 即半透明效果 度娘 谷哥 很久后也无法解决了该问题 忽然想到了下面的方法: 半透明的颜色 最终画在

由于net平台的普及问题 为了尽可能的增加用户使用量 很多应用基于2.0写的 所以不考虑wpf

众所周知 winform 的textbox的颜色不能使用 带有 Alpha 属性的颜色 即半透明效果 度娘 谷哥 很久后也无法解决了该问题

忽然想到了下面的方法:

半透明的颜色 最终画在画布上叠加后 也是1个rgb颜色 取出来 就是我们要的颜色

仅适用于纯色 如果父标签有背景图片 这个暂时没法实现

有人要问了 既然只适用于纯色 那半透明的效果还有什么意义呢?


答:有的 在制作皮肤的过程中 比如在父标签背景变更的情况下 要让textbox 背景更改为 父标签的 Alpha = 30 ,这种方法就很适用


看效果:








上代码(调用这个静态函数返回的颜色赋值给textbox就可以):

VB.NET

''' <summary>
  ''' 将有半透明效果的颜色转成没有半透明的颜色
  ''' </summary>
  ''' <param name="backcolor">背景色,一般为白色 Color.White</param>
  ''' <param name="alphacolor">带alpha的颜色</param>
  ''' <returns></returns>
  ''' <remarks></remarks>
  Protected Friend Shared Function Alpha2Color(backcolor As Color,alphacolor As Color) As Color
    Using bmp As New Bitmap(1,1)
      Using g As Graphics = Graphics.FromImage(bmp)
        g.Clear(backcolor)
        Using br As New SolidBrush(alphacolor)
          g.FillRectangle(br,New Rectangle(0,1,1))
        End Using
      End Using
      Return bmp.GetPixel(0,0)
    End Using
  End Function

C#
/// <summary>
/// 将有半透明效果的颜色转成没有半透明的颜色
/// </summary>
/// <param name="backcolor">背景色,一般为白色 Color.White</param>
/// <param name="alphacolor">带alpha的颜色</param>
/// <returns></returns>
/// <remarks></remarks>
protected static internal Color Alpha2Color(Color backcolor,Color alphacolor)
{
	using (Bitmap bmp = new Bitmap(1,1)) {
		using (Graphics g = Graphics.FromImage(bmp)) {
			g.Clear(backcolor);
			using (SolidBrush br = new SolidBrush(alphacolor)) {
				g.FillRectangle(br,new Rectangle(0,1));
			}
		}
		return bmp.GetPixel(0,0);
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读