duilib动画按钮实现

本文介绍了如何使用C++和duilib库实现一个带有动画效果的按钮。通过定义CButtonUIEx类,继承自CButtonUI,并利用定时器来处理鼠标进入和离开时的动画效果。详细讲解了代码实现过程,包括鼠标进入和离开时的定时器处理函数及画帧方法。
摘要由CSDN通过智能技术生成
在工作中遇到一个要实现动画按钮的问题,在网上搜索了一圈,也没有找到比较合适的解决方法。于是就自己花点时间写了一个。现在把实现方法贡献给大家,希望您有用。
实现方式为定义一个类“ CButtonUIEx ”,该类继承于“ CButtonUI ”。动画效果是用定时器来实现的,所以定义了两个定时器:一个用来播放鼠标进入动画,一个用于鼠标离开播放,其实就是逆序播放一遍。
#ifndef __UIBUTTONEX_H__
#define __UIBUTTONEX_H__

#pragma once

#define EVENT_ANIMA_ENTER_TIMERID    UIMSG_USER+100         //鼠标进入按钮TimerID
#define EVENT_ANIMA_LEAVE_TIMERID    UIMSG_USER+101         //鼠标离开按钮TimerID
class  CButtonUIEx : public CButtonUI
{}
然后就是定义一个vector用于存放图片路径以及一个传入图片的接口。

.h文件
    void SetAnimationImages(vector<DuiLib::CDuiString>);
    vector<DuiLib::CDuiString> vecAnimation;
    UINT            m_nFrameCount;                // 图片总帧数
    UINT            m_nFramePosition;            // 当前放到第几帧
    UINT            m_nTimerSize;                // 帧与帧之间间隔时间
    BOOL            m_bLeaveFlag;

.cpp文件
void CButtonUIEx::SetAnimationImages(vector<DuiLib::CDuiString> vecList)
{
    vecAnimation = vecList;
    m_nFrameCount = vecList.size();
}
这里是鼠标进入后的定时器TIMER以及帧处理方法
void CButtonUIEx::OnTimer(UINT_PTR idEvent)
{
    if (idEvent != EVENT_ANIMA_ENTER_TIMERID
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值