#ifndef UI_UTILS_SHADOW_H_ #define UI_UTILS_SHADOW_H_ #pragma once namespace ui { class Box; class UILIB_API Shadow { public: Shadow(); /** * @brief 设置是否附加阴影效果 * @param[in] bShadowAttached 设置 true 为是,false 为否 * @return 无 */ void SetShadowAttached(bool bShadowAttached) { m_bShadowAttached = bShadowAttached; } /** * @brief 判断是否已经附加了阴影 * @return 返回 true 表示已经附加,否则为 false */ bool IsShadowAttached() const { return m_bShadowAttached; } /** * @brief 设置阴影的九宫格属性 * @param[in] rect 要设置的九宫格属性 * @return 无 */ void SetShadowCorner(const UiRect &rect); /** * @brief 获取阴影的九宫格属性 * @return 返回阴影的九宫格属性 */ UiRect GetShadowCorner() const; /** * @brief 根据初始化的阴影范围重置阴影边框 * @return 无 */ void ResetShadowBox(); /** * @brief 设置阴影图片 * @param[in] image 图片路径 * @return 无 */ void SetShadowImage(const std::wstring &image); /** * @brief 获取阴影图片位置 * @return 返回阴影图片位置 */ std::wstring GetShadowImage() const; /** * @brief 将阴影附加到窗口 * @param[in] pRoot 窗口的顶层容器 * @return 返回附加阴影后的容器指针 */ Box* AttachShadow(Box* pRoot); /** * @brief 设置窗口最大化还是还原状态 * @param[in] isMaximized 设置为 true 表示最大化,false 为还原初始状态 * @return 无 */ void MaximizedOrRestored(bool isMaximized); /** * @brief 获取附加阴影后的容器指针 * @return 返回容器指针 */ Control* GetRoot(); /** * @brief 清理图片缓存 * @return 无 */ void ClearImageCache(); private: bool m_bShadowAttached; bool m_bUseDefaultImage; std::wstring m_strImage; UiRect m_rcCurShadowCorner; UiRect m_rcDefaultShadowCorner; UiRect m_rcShadowCornerBackup; Box* m_pRoot; }; } #endif // UI_UTILS_SHADOW_H_