1

我正在显示一个使用UpdateLayeredWindow并想添加过渡动画的窗口。AnimateWindow如果我使用滑动或滚动效果(尽管有一些闪烁),则可以使用。但是,当我尝试使用它AW_BLEND来产生淡入淡出效果时,我不仅会在动画后(每像素和整个图像上)失去任何半透明度,而且还会出现默认的窗口边框。有没有办法防止边框出现?

4

2 回答 2

2

由于我正在使用UpdateLayeredWindowSetLayeredWindowAttributes将无法正常工作。这里的图表非常有用。相反,我只需要在减少结构成员的UpdateLayeredWindow同时调用循环。事实上,如果 alpha 是变化的全部,那么指向结构的指针、分层窗口的句柄和标志是我需要传递的唯一内容。SourceConstantAlphaBLENDFUNCTIONBLENDFUNCTIONUpdateLayeredWindow

于 2009-07-29T23:12:24.007 回答
0

我发现成功淡入/淡出窗口(没有您描述的复杂性)的唯一方法是首先创建一个具有WS_EX_LAYERED扩展样式的窗口。然后我启动一个计时器(30 毫秒),通过调用以下命令逐渐淡化窗口:

SetLayeredWindowAttributes(0, 
                          (BYTE)(m_nAnimationCount * WINDOW_ALPHA), 
                          LWA_ALPHA);

其中WINDOW_ALPHA是 23(似乎看起来最好),并且m_nAnimationCount是从 0 到 10 的计数(如果逐渐消失,则从 10 到 0)。

如果您发现这样做的更好方法,我很想知道。

于 2009-07-28T22:45:07.567 回答