ENH: ColorPicker use the bmp size

JIRA: [STUDIO-13908] [STUDIO-14242]
Change-Id: Iac008bcc483b31e3f7e7278a0eea20823eb3bf70
(cherry picked from commit ad9902537c4b1842fd29cfd9fb9eb70681c78327)
This commit is contained in:
xin.zhang
2025-09-23 17:59:26 +08:00
committed by Noisyfox
parent d5da6b834b
commit 46fd6c9794
2 changed files with 7 additions and 6 deletions

View File

@@ -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 = create_scaled_bitmap("color_picker_border", nullptr, 25);
m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", 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); 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 = create_scaled_bitmap("color_picker_border", nullptr, 25);
m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", 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(); Refresh();
} }
@@ -1442,15 +1443,15 @@ void ColorPicker::doRender(wxDC& dc)
if (m_selected) radius -= FromDIP(1); if (m_selected) radius -= FromDIP(1);
if (alpha == 0) { 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_x = (size.x - bmp_size.x) / 2;
int center_y = (size.y - bmp_size.y) / 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) { else if (alpha != 254 && alpha != 255) {
if (transparent_changed) { if (transparent_changed) {
std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString(); std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString();
if (rgb.size() == 8) { if (rgb.size() == 9) {
//delete alpha value //delete alpha value
rgb = rgb.substr(0, rgb.size() - 2); rgb = rgb.substr(0, rgb.size() - 2);
} }
@@ -1461,13 +1462,12 @@ void ColorPicker::doRender(wxDC& dc)
replace.push_back(fill_replace); replace.push_back(fill_replace);
m_bitmap_transparent = ScalableBitmap(this, "transparent_color_picker", 25, false, false, true, replace).bmp(); m_bitmap_transparent = ScalableBitmap(this, "transparent_color_picker", 25, false, false, true, replace).bmp();
transparent_changed = false; transparent_changed = false;
}
wxSize bmp_size = m_bitmap_transparent.GetSize(); wxSize bmp_size = m_bitmap_transparent.GetSize();
int center_x = (size.x - bmp_size.x) / 2; int center_x = (size.x - bmp_size.x) / 2;
int center_y = (size.y - bmp_size.y) / 2; int center_y = (size.y - bmp_size.y) / 2;
dc.DrawBitmap(m_bitmap_transparent, center_x, center_y); dc.DrawBitmap(m_bitmap_transparent, center_x, center_y);
} }
}
else { else {
dc.SetPen(wxPen(m_colour)); dc.SetPen(wxPen(m_colour));
dc.SetBrush(wxBrush(m_colour)); dc.SetBrush(wxBrush(m_colour));

View File

@@ -37,6 +37,7 @@ public:
wxBitmap m_bitmap_border; wxBitmap m_bitmap_border;
wxBitmap m_bitmap_border_dark; wxBitmap m_bitmap_border_dark;
wxBitmap m_bitmap_transparent; wxBitmap m_bitmap_transparent;
ScalableBitmap m_bitmap_transparent_def; //default transparent material
wxColour m_colour; wxColour m_colour;
std::vector<wxColour> m_cols; std::vector<wxColour> m_cols;