From 46fd6c979425f350f9c39971522923e1dabf45a7 Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Tue, 23 Sep 2025 17:59:26 +0800 Subject: [PATCH] ENH: ColorPicker use the bmp size JIRA: [STUDIO-13908] [STUDIO-14242] Change-Id: Iac008bcc483b31e3f7e7278a0eea20823eb3bf70 (cherry picked from commit ad9902537c4b1842fd29cfd9fb9eb70681c78327) --- src/slic3r/GUI/AMSMaterialsSetting.cpp | 12 ++++++------ src/slic3r/GUI/AMSMaterialsSetting.hpp | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 8805cff557..2349204416 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -1378,6 +1378,7 @@ ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*= m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25); m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25); + m_bitmap_transparent_def = ScalableBitmap(this, "transparent_color_picker", 25); m_bitmap_transparent = create_scaled_bitmap("transparent_color_picker", nullptr, 25); } @@ -1387,7 +1388,7 @@ void ColorPicker::msw_rescale() { m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25); m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25); - m_bitmap_transparent = create_scaled_bitmap("transparent_color_picker", nullptr, 25); + m_bitmap_transparent_def.msw_rescale(); Refresh(); } @@ -1442,15 +1443,15 @@ void ColorPicker::doRender(wxDC& dc) if (m_selected) radius -= FromDIP(1); if (alpha == 0) { - wxSize bmp_size = m_bitmap_transparent.GetSize(); + wxSize bmp_size = m_bitmap_transparent_def.GetBmpSize(); int center_x = (size.x - bmp_size.x) / 2; int center_y = (size.y - bmp_size.y) / 2; - dc.DrawBitmap(m_bitmap_transparent, center_x, center_y); + dc.DrawBitmap(m_bitmap_transparent_def.bmp(), center_x, center_y); } else if (alpha != 254 && alpha != 255) { if (transparent_changed) { std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString(); - if (rgb.size() == 8) { + if (rgb.size() == 9) { //delete alpha value rgb = rgb.substr(0, rgb.size() - 2); } @@ -1461,12 +1462,11 @@ void ColorPicker::doRender(wxDC& dc) replace.push_back(fill_replace); m_bitmap_transparent = ScalableBitmap(this, "transparent_color_picker", 25, false, false, true, replace).bmp(); transparent_changed = false; - + } wxSize bmp_size = m_bitmap_transparent.GetSize(); int center_x = (size.x - bmp_size.x) / 2; int center_y = (size.y - bmp_size.y) / 2; dc.DrawBitmap(m_bitmap_transparent, center_x, center_y); - } } else { dc.SetPen(wxPen(m_colour)); diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index ac9f9b4c6f..c678ec0717 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -37,6 +37,7 @@ public: wxBitmap m_bitmap_border; wxBitmap m_bitmap_border_dark; wxBitmap m_bitmap_transparent; + ScalableBitmap m_bitmap_transparent_def; //default transparent material wxColour m_colour; std::vector m_cols;