diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 5de7af5d01..1be2495ca3 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -131,7 +131,7 @@ public: memDC.SetFont(m_action_font); memDC.SetTextForeground(wxColour(237, 107, 33)); - memDC.DrawText(text, int(m_scale * 60), int(m_scale * 275)); + memDC.DrawText(text, int(m_scale * 60), m_action_line_y_position); memDC.SelectObject(wxNullBitmap); set_bitmap(bitmap); @@ -206,14 +206,22 @@ public: memDc.SetFont(m_constant_text.version_font); memDc.DrawLabel(m_constant_text.version, banner_rect, wxALIGN_TOP | wxALIGN_LEFT); + int version_height = memDc.GetTextExtent(m_constant_text.version).GetY(); memDc.SetFont(m_constant_text.credits_font); memDc.DrawLabel(m_constant_text.credits, banner_rect, wxALIGN_BOTTOM | wxALIGN_LEFT); + int credits_height = memDc.GetMultiLineTextExtent(m_constant_text.credits).GetY(); + int text_height = memDc.GetTextExtent("text").GetY(); + + // calculate position for the dynamic text + int logo_and_header_height = margin + logo_size + title_height + version_height; + m_action_line_y_position = logo_and_header_height + 0.5 * (bmp.GetHeight() - margin - credits_height - logo_and_header_height - text_height); } private: wxBitmap m_main_bitmap; wxFont m_action_font; + int m_action_line_y_position; float m_scale {1.0}; struct ConstantText @@ -258,7 +266,8 @@ private: float title_font_scale = (float)text_banner_width / GetTextExtent(m_constant_text.title).GetX(); scale_font(m_constant_text.title_font, title_font_scale > 3.5f ? 3.5f : title_font_scale); - scale_font(m_constant_text.version_font, 2.f); + float version_font_scale = (float)text_banner_width / GetTextExtent(m_constant_text.version).GetX(); + scale_font(m_constant_text.version_font, version_font_scale > 2.f ? 2.f : version_font_scale); // The width of the credits information string doesn't respect to the banner width some times. // So, scale credits_font in the respect to the longest string width