--- nono/wx/wxbitmappanel.h 2026/04/29 17:05:09 1.1 +++ nono/wx/wxbitmappanel.h 2026/04/29 17:05:27 1.1.1.3 @@ -5,7 +5,7 @@ // // -// バックバッファが BitmapRGB なパネル +// バックバッファが BitmapRGBX なパネル // #pragma once @@ -18,22 +18,45 @@ class WXBitmapPanel : public wxPanel using inherited = wxPanel; public: WXBitmapPanel(wxWindow *parent, - const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); + const wxPoint& position = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL); WXBitmapPanel(wxWindow *parent, wxWindowID id, - const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); + const wxPoint& position = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL); virtual ~WXBitmapPanel() override; + // 背景色を設定する void SetBitmapBGColor(Color c); + // 背景色で塗りつぶす + void Fill(); + + // サイズ固定。 + // Bitmap クラスは範囲外への描画を自動クリップする機能を持っていないため、 + // ソフトウェアキーボードウィンドウが実画面サイズを超えるようなケースで + // あっても、バックバッファは表示ウィンドウサイズと同じにするのではなく + // 常に指定の大きさで存在していてほしい。という時に指定する。 + // バックバッファより小さいウィンドウへの描画は問題なく行えるっぽい?。 + // 一方、自前スクロールバーのように、制約なく指定サイズを受け入れる場合は + // (0, 0) を指定する (デフォルト)。 + void SetFixedSize(const wxSize& size); + protected: void OnSize(wxSizeEvent&); void OnPaint(wxPaintEvent&); virtual void Draw(); - BitmapRGB bitmap {}; + BitmapRGBX bitmap {}; + + // 固定サイズ指定 + wxSize fixedsize {}; private: + BitmapRGB bitmap24 {}; + Color bitmap_bgcolor; wxDECLARE_EVENT_TABLE();