/** @file CircleProgress.h * @brief 圆环型滚动条控件,圆环中间可以有文本(如85%) * @copyright (c) 2019-2022, NetEase Inc. All rights reserved * @author Xuhuajie * @date 2019/8/14 */ #ifndef UI_CONTROL_CIRCLEPROGRESS_H_ #define UI_CONTROL_CIRCLEPROGRESS_H_ #pragma once namespace ui { class UILIB_API CircleProgress : public Progress { public: CircleProgress(); /// 重写父类方法,提供个性化功能,请参考父类声明 virtual void SetAttribute(const std::wstring& strName, const std::wstring& strValue) override; virtual void PaintStatusImage(IRenderContext* pRender) override; virtual void ClearImageCache() override; /** * @brief 设置圆形滚动条 * @param[in] bCircular 为 true 时设置为圆形滚动条,false 时设置为父级滚动条,默认为 true * @return 无 */ void SetCircular(bool bCircular = true); /** * @brief 设置递增方向 * @param[in] bClockwise 为 true 时设置为顺时针,false 时设置为逆时针,默认为 true * @return 无 */ void SetClockwiseRotation(bool bClockwise = true); /** * @brief 设置圆环宽度 * @param[in] nCircleWidth 宽度数值 * @return 无 */ void SetCircleWidth(int nCircleWidth); /** * @brief 设置进度条背景颜色 * @param[in] strColor要设置的背景颜色字符串,该字符串必须在 global.xml 中存在 * @return 无 */ void SetBackgroudColor(const std::wstring& strColor); /** * @brief 设置进度条前景颜色 * @param[in] strColor要设置的前景颜色字符串,该字符串必须在 global.xml 中存在 * @return 无 */ void SetForegroudColor(const std::wstring& strColor); /** * @brief 设置进度条前景渐变颜色,与ForegroudColor同时使用,可以不设置,则无渐变效果 * @param[in] strColor要设置的前景渐变颜色字符串,该字符串必须在 global.xml 中存在 * @return 无 */ void SetCircleGradientColor(const std::wstring& strColor); /** * @brief 设置进度指示移动图标 * @param[in] sIndicatorImage要设置的图片 * @return 无 */ void SetIndicator(const std::wstring& sIndicatorImage); protected: bool m_bCircular; bool m_bClockwise; int m_nCircleWidth; DWORD m_dwBackgroundColor; DWORD m_dwForegroundColor; DWORD m_dwGradientColor; //Image m_IndicatorImage; //使用image对象,无法满足需求,需要设置矩阵变换 Gdiplus::Image* m_pIndicator; //此类目前维护资源管理 std::wstring m_sIndicatorImage; }; } // namespace ui #endif // UI_CONTROL_CIRCLEPROGRESS_H_