FIX: Bitmap will flash when sending printing task

Jira: STUDIO-5278

Signed-off-by: wenjie.guo <wenjie.guo@bambulab.com>
Change-Id: Ib0c8710b8d5d6b98fad043c950f054aa35bea965
This commit is contained in:
wenjie.guo 2023-11-21 15:00:43 +08:00 committed by Lane.Wei
parent cd02791647
commit aa3be8aa4c
2 changed files with 19 additions and 9 deletions

View File

@ -4196,6 +4196,8 @@ void SelectMachineDialog::sys_color_changed()
else {
m_rename_button->SetBitmap(ams_editable->bmp());
}
m_thumbnailPanel->set_thumbnail_on_color_change();
m_thumbnailPanel->Refresh();
m_rename_button->Refresh();
}
@ -4430,7 +4432,6 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
m_staticbitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize);
m_background_bitmap = ScalableBitmap(this,"thumbnail_grid",256);
sizer->Add(m_staticbitmap, 1, wxEXPAND, 0);
Bind(wxEVT_PAINT, &ThumbnailPanel::paint,this);
SetSizer(sizer);
Layout();
Fit();
@ -4438,15 +4439,23 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
void ThumbnailPanel::set_thumbnail(wxImage img)
{
wxBitmap bitmap(img);
m_staticbitmap->SetBitmap(bitmap);
m_bitmap = img;
//Paint the background bitmap to the thumbnail bitmap with wxMemoryDC
wxMemoryDC dc;
bitmap_with_background.Create(wxSize(m_bitmap.GetWidth(), m_bitmap.GetHeight()));
dc.SelectObject(bitmap_with_background);
dc.DrawBitmap(m_background_bitmap.bmp(), 0, 0);
dc.DrawBitmap(m_bitmap, 0, 0);
dc.SelectObject(wxNullBitmap);
set_thumbnail_on_color_change();
}
void ThumbnailPanel::paint(wxPaintEvent& evt) {
wxPaintDC dc(this);
void ThumbnailPanel::set_thumbnail_on_color_change() {
if (wxGetApp().dark_mode())
dc.DrawBitmap(m_background_bitmap.bmp(), 0, 0);
dc.DrawBitmap(m_staticbitmap->GetBitmap(),0,0);
m_staticbitmap->SetBitmap(bitmap_with_background);
else
m_staticbitmap->SetBitmap(m_bitmap);
}
ThumbnailPanel::~ThumbnailPanel() {}

View File

@ -501,7 +501,7 @@ public:
class ThumbnailPanel : public wxPanel
{
public:
wxBitmap * m_bitmap{nullptr};
wxBitmap m_bitmap;
wxStaticBitmap *m_staticbitmap{nullptr};
ThumbnailPanel(wxWindow * parent,
@ -514,9 +514,10 @@ public:
void PaintBackground(wxDC &dc);
void OnEraseBackground(wxEraseEvent &event);
void set_thumbnail(wxImage img);
void paint(wxPaintEvent& evt);
void set_thumbnail_on_color_change();
private:
ScalableBitmap m_background_bitmap;
wxBitmap bitmap_with_background;
};