--- nono/wx/wxbitmappanel.cpp 2026/04/29 17:05:16 1.1.1.3 +++ nono/wx/wxbitmappanel.cpp 2026/04/29 17:05:57 1.1.1.7 @@ -5,11 +5,10 @@ // // -// バックバッファが BitmapRGB なパネル +// バックバッファが BitmapRGBX なパネル // #include "wxbitmappanel.h" -#include "wxcolor.h" // イベントテーブル wxBEGIN_EVENT_TABLE(WXBitmapPanel, inherited) @@ -29,6 +28,8 @@ WXBitmapPanel::WXBitmapPanel(wxWindow *p const wxPoint& position, const wxSize& size, long style) : inherited(parent, id, position, size, style) { + SetName("WXBitmapPanel"); + bitmap_bgcolor = BGPANEL; } @@ -53,9 +54,9 @@ WXBitmapPanel::Fill() } } -// 固定サイズ指定 +// 最小サイズ指定 void -WXBitmapPanel::SetFixedSize(const wxSize& size_) +WXBitmapPanel::SetMinBitmapSize(const wxSize& size_) { fixedsize = size_; } @@ -65,13 +66,11 @@ void WXBitmapPanel::OnSize(wxSizeEvent& event) { wxSize size = event.GetSize(); - if (size.x <= 1 || size.y <= 1) { + if (size.x < 1 || size.y < 1) { return; } - event.Skip(); - - // 固定サイズ指定がある場合。 + // 最小サイズ指定がある場合。 if (fixedsize.x != 0 && size.x < fixedsize.x) { size.x = fixedsize.x; } @@ -84,7 +83,12 @@ WXBitmapPanel::OnSize(wxSizeEvent& event if (size != oldsize) { bitmap.Create(size.x, size.y); bitmap.Fill(bitmap_bgcolor); + + bitmap24.Create(size.x, size.y); } + + Refresh(); + event.Skip(); } // 描画イベント (UI スレッドから呼ばれる) @@ -98,7 +102,10 @@ WXBitmapPanel::OnPaint(wxPaintEvent& eve // 継承クラスによる描画 Draw(); - wxImage image(bitmap.GetWidth(), bitmap.GetHeight(), bitmap.GetBuf(), true); + bitmap.ConvertToRGB(bitmap24); + + wxImage image(bitmap24.GetWidth(), bitmap24.GetHeight(), + bitmap24.GetBuf(), true); wxBitmap bmp(image); // 実画面 DC にコピー。