我正在显示一个使用UpdateLayeredWindow
并想添加过渡动画的窗口。AnimateWindow
如果我使用滑动或滚动效果(尽管有一些闪烁),则可以使用。但是,当我尝试使用它AW_BLEND
来产生淡入淡出效果时,我不仅会在动画后(每像素和整个图像上)失去任何半透明度,而且还会出现默认的窗口边框。有没有办法防止边框出现?
问问题
1454 次
2 回答
2
由于我正在使用UpdateLayeredWindow
,SetLayeredWindowAttributes
将无法正常工作。这里的图表非常有用。相反,我只需要在减少结构成员的UpdateLayeredWindow
同时调用循环。事实上,如果 alpha 是变化的全部,那么指向结构的指针、分层窗口的句柄和标志是我需要传递的唯一内容。SourceConstantAlpha
BLENDFUNCTION
BLENDFUNCTION
UpdateLayeredWindow
于 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 回答