C# 图形透明控件(所有内容也变得透明)

C# 图形透明控件(所有内容也变得透明),c#,winforms,controls,icons,gdi+,C#,Winforms,Controls,Icons,Gdi+,我刚做了一个用alpha淡出的控件。问题是,我绘制的“图标”(来自SystemIcons)和其他控件(一键式atm)不透明。所有文本和背景都会按照我在“Graphics.DrawXXX(…)”中使用的alpha值淡入淡出 我怎么能用相同的alpha值来画这些东西呢 非常感谢 protected override void OnPaint(PaintEventArgs e) { 如果(!可见)返回; 图形g=e.图形; 颜色边界颜色; 颜色梯度topcolor; 颜色梯度底色; 颜色文本颜色; i

我刚做了一个用alpha淡出的控件。问题是,我绘制的“图标”(来自SystemIcons)和其他控件(一键式atm)不透明。所有文本和背景都会按照我在“Graphics.DrawXXX(…)”中使用的alpha值淡入淡出

我怎么能用相同的alpha值来画这些东西呢

非常感谢

protected override void OnPaint(PaintEventArgs e)
{
如果(!可见)返回;
图形g=e.图形;
颜色边界颜色;
颜色梯度topcolor;
颜色梯度底色;
颜色文本颜色;
if(_displayColorStyle==IB_displayColorStyle.Normal)
{
borderColor=Color.FromArgb(fade_currentAlpha,187191196);
gradientTopColor=Color.FromArgb(淡入淡出度α,246249251);
gradientBottomColor=Color.FromArgb(淡入度α,233236240);
textColor=Color.FromArgb(淡入淡出度α,106,106);
}
else if(_displayColorStyle==IB_displayColorStyle.Info)
{
borderColor=Color.FromArgb(淡入度α,171186208);
gradientTopColor=Color.FromArgb(淡入度α,224236249);
gradientBottomColor=Color.FromArgb(淡入度α,210,225,240);
textColor=Color.FromArgb(淡入淡出度α,106,106);
}
else if(_displayColorStyle==IB_displayColorStyle.Warning)
{
borderColor=Color.FromArgb(淡入淡出度α,106,106);
gradientTopColor=Color.FromArgb(淡入度α,240,225,53);
gradientBottomColor=Color.FromArgb(fade_currentAlpha,239194,37);
textColor=Color.FromArgb(淡入淡出度α,106,106);
}
其他的
{
borderColor=Color.FromArgb(淡入淡出度α,106,106);
gradientTopColor=Color.FromArgb(淡入度α,255,0,0);
gradientBottomColor=Color.FromArgb(淡入度α,217,0,0);
textColor=Color.FromArgb(fade_currentAlpha,224236249);
}
//画背景
LinearGradientBrush backgroundBrush=新的LinearGradientBrush(ClientRectangle、gradientTopColor、,
渐变底色,90f);
g、 FillRectangle(背景笔刷,1,1,ClientRectangle.Width-2,ClientRectangle.Height-2);
//划界
g、 DrawRectangle(新画笔(新SolidBrush(borderColor),1f),0,0,ClientRectangle.Width-1,
ClientRectangle.高度-1);
//选择要使用的图标
图标使用图标=\u displayColorStyle==IB\u displayColorStyle.Normal
无效的
:_displayColorStyle==IB_displayColorStyle.Info
?系统图标。信息
:\u displayColorStyle==IB\u displayColorStyle.Warning
?系统图标。警告
:系统图标。错误;
if(usedIcon!=null)//如果使用图标,则绘制此
g、 绘图图标(usedIcon,5,Size.Height/2-(SystemIcons.Error.Height/2));
if(!string.IsNullOrEmpty(_title))//如果应该显示标题
{
if(usedIcon==null)//无图标,文本左对齐
{
g、 抽绳(_text,新字体(“Arial”,8f,FontStyle.Regular),新SolidBrush(textColor),
新矩形F(5f,20f,(宽度-_closeButton.Width-10),高度-12f);
g、 抽绳(标题,新字体(“Arial”,10f,FontStyle.Bold),新SolidBrush(textColor),
新矩形F(5f,5f,(宽度-_closeButton.Width-10),15f);
}
其他的
{
g、 抽绳(_text,新字体(“Arial”,8f,FontStyle.Regular),新SolidBrush(textColor),
新矩形F(10f+使用尺寸宽度,20f,
(宽度-_closeButton.Width-20-usedIcon.Width),高度-12f);
g、 抽绳(标题,新字体(“Arial”,10f,FontStyle.Bold),新SolidBrush(textColor),
新矩形F(10f+使用图标宽度,5f,(宽度-_closeButton.Width-20-使用图标宽度,15f));
}
}
其他的
{
if(usedIcon==null)//无图标,文本左对齐
g、 抽绳(_text,新字体(“Arial”,8f,FontStyle.Regular),新SolidBrush(textColor),
新的矩形F(5f,5f,(宽度-_closeButton.Width-10),高度-2f);
其他的
g、 抽绳(_text,新字体(“Arial”,8f,FontStyle.Regular),新SolidBrush(textColor),
新矩形F(10f+使用图标宽度,5f,(宽度-_closeButton.Width-20-使用图标宽度),高度-2f);
}
基础漆(e);
}

请发布一些代码,以便我们可以复制。这是绘图代码。这是一个更普遍的问题。我想知道如何在透明控件上绘制图标和控件。他们非常不支持这一点:-/正如我所看到的,只是表单…好的,图标的东西。。。我刚刚找到了一个有效的解决方案:但另一件事是控件上的控件…:-/