![]() |
1
2
我以前做过类似的事情,并使用GDI+实现了它。 这个按钮在它的draw方法中应该做两件事。
使用BackgroundWorker给你一个平滑的动画。因此,在mouseover上启动BackgroundWorker并使其运行直到Alpha达到1.0f。当鼠标从按钮中移除时,工作人员应减少Alpha直到它达到0.0f。有一个名为fadingin的变量,以便BackgroundWorker了解它应该做什么。你的mouse-in-and-out事件应该正确地将fadingin设置为true或false,然后启动BackgroundWorker(如果它还没有运行)。 BackgroundWorkers dowwork方法可以如下所示:
这里的秒表和循环构造将使动画以60fps为目标。 backgroundWorker ProgressChanged只需将ColorMatrix更改为适当的alpha值,并将ColorMatrix绑定到ImageAttributes,然后通过调用invalidate使控件无效。必须这样做,以便从主线程而不是BackgroundWorker线程请求GUI重绘。如果直接从DoWork执行此操作,则在进行绘制操作时尝试修改ImageAttributes时会出现异常。 希望这能帮助你在你的按钮上制作一个好的平滑动画。 |
![]() |
2
0
你需要选择一张图片在底部,一张在顶部。在上面的一个将需要它的alpha值从0调整到255的步骤来创建动画。 这个 MSDN forum thread 详细说明了混合的方法。 |