毋庸置疑,我的GooglFu今天很弱。
我有一个小的WinForm,因为它的背景是一个不对称的图像。为了适应这种形象,表格本身比图像本身略大。
我将表单背景颜色设置为LightSalmon以及表单的TransparencyKey。
我认为发布代码(我认为它来自CodeProject)并不是完全必要的,但是,为了以防万一,我也包含了它。
FadeIn:
private void opTimer_Tick(object sender, EventArgs e)
{
if (opacityIncrease > 0)
{
if (this.Opacity < 1)
this.Opacity += opacityIncrease;
}
else
{
if (this.Opacity > 0)
this.Opacity += opacityIncrease;
else
this.Close();
}
}
FadeOut(在formClosing事件中调用)
public void FadeForm()
{
opacityIncrease = -opacityDecrease;
}
代码可以正常工作,但问题出在表单淡入淡出时。随着表格淡入,我可以看到表格背景,那可怕的LightSalmon。一旦表单达到完全不透明度,背景确实是完全透明的。
有没有办法在淡入/淡出过程中保持TransparencyKey颜色(表单背景),透明?
最简单的解决方案是将表单背景图像更改为适合表单的表单,而不必担心整个TransparencyKey业务,但是,我更喜欢我正在使用的图像,但是,它肯定不是一个ShowStopper将其改为别的东西。
使用VS2008,.NET 3.5
一如既往,很高兴在必要时回答任何后续问题。
感谢。
答案 0 :(得分:0)
我可以猜测Fadeout \ Fadein改变Pixel值,因此它不等于透明键。
只有当它相等时才会变得透明。
如果可以的话,尝试将淡入/淡出部分限制为不包括LightSalmon区域 - 它应保持相同的像素值并始终保持透明。