From c35fe48fc39e2ca05fdd62a0d6fdb76a5a010553 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Thu, 5 Feb 2026 10:25:37 +0800 Subject: [PATCH] feat: add background support for Label --- src/graphics/ui/UIRenderer.cpp | 15 +++++++++------ src/graphics/ui/UIRenderer.h | 5 +++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/graphics/ui/UIRenderer.cpp b/src/graphics/ui/UIRenderer.cpp index 68ffc66..0d6bf2c 100644 --- a/src/graphics/ui/UIRenderer.cpp +++ b/src/graphics/ui/UIRenderer.cpp @@ -44,7 +44,7 @@ void UIRenderer::renderUI(const UIRenderData& uiRenderData) { void UIRenderer::renderButton(const ButtonData& buttonData) { //SDL_Log("render button\n"); - renderButtonBackground(buttonData); + renderBackground(buttonData); renderButtonBorder(buttonData); renderText(buttonData); @@ -52,12 +52,13 @@ void UIRenderer::renderButton(const ButtonData& buttonData) { void UIRenderer::renderLabel(const LabelData& labelData) { //SDL_Log("start render label\n"); + renderBackground(labelData); renderText(labelData); } - -void UIRenderer::renderButtonBackground(const ButtonData& buttonData) { +template +void UIRenderer::renderBackground(const Type& data) { // 设置绘制颜色 if (!m_renderer) { SDL_Log("renderer is null\n"); @@ -65,9 +66,11 @@ void UIRenderer::renderButtonBackground(const ButtonData& buttonData) { // SDL_Log("renderButtonBackground called for rect (%d,%d,%d,%d)", // buttonData.rect.x, buttonData.rect.y, buttonData.rect.w, buttonData.rect.h); //SDL_Log("start render background\n"); - auto m_backgroundColor = buttonData.backgroundColor; - auto m_rect = buttonData.rect; - + auto m_backgroundColor = data.backgroundColor; + auto m_rect = data.rect; + if (data.backgroundColor.a == 0) { + return; + } SDL_SetRenderDrawColor(m_renderer, m_backgroundColor.r, m_backgroundColor.g, m_backgroundColor.b, m_backgroundColor.a); //auto [width, height] = m_textRenderer->getLogicalTextSize(buttonData.text, buttonData.textstytle); auto viewport = m_textRenderer->getViewport(); diff --git a/src/graphics/ui/UIRenderer.h b/src/graphics/ui/UIRenderer.h index a44f12d..d17ae4d 100644 --- a/src/graphics/ui/UIRenderer.h +++ b/src/graphics/ui/UIRenderer.h @@ -13,10 +13,11 @@ private: /** - * @brief 渲染按钮背景 + * @brief 渲染背景 * @param renderer SDL渲染器 */ - void renderButtonBackground(const ButtonData& buttonData); + template + void renderBackground(const Type& data); /** * @brief 渲染按钮边框