--- nono/wx/wxvideomonitor.cpp 2026/04/29 17:04:40 1.1.1.3 +++ nono/wx/wxvideomonitor.cpp 2026/04/29 17:04:53 1.1.1.4 @@ -5,6 +5,7 @@ // #include "wxvideomonitor.h" +#include "wxbmp.h" #include "bitmap.h" // @@ -53,13 +54,13 @@ WXLunaBitmapPanel::OnSize(wxSizeEvent& e view_width = size.x; view_height = size.y; - // BMP バッファを持っていれば一旦解放 - bmpbuf.reset(); - // BMP バッファ作成 - // 正しく描かれなかった時に分かりやすいよう初期値は濃いグレーにしておく - bmpbuf.reset(new uint8 [view_width * view_height * 3]); - memset(&bmpbuf[0], 0x70, view_width * view_height * 3); + bmpbuf.resize(view_width * view_height * 3); + // 正しく描かれなかった時に分かりやすいよう初期値は濃いグレーにしておく。 + // としたいところだが、このバッファはわりと大きくて更にリサイズする時は + // 連続して頻繁にリサイズが起きることになるので、この無駄な塗りつぶしは + // デバッグ目的以外では止めておく。 + //std::fill(bmpbuf.begin(), bmpbuf.end(), 0x70); } // スクロールイベント @@ -86,7 +87,7 @@ WXLunaBitmapPanel::OnPaint(wxPaintEvent& // 更新があれば、ここで裏バッファに描画 Draw(); // バッファから wxBitmap を作成 - wxImage image(view_width, view_height, bmpbuf.get(), true); + wxImage image(view_width, view_height, &bmpbuf[0], true); wxBitmap bitmap(image); // 実画面 DC にコピー @@ -145,7 +146,6 @@ WXLunaBitmapWindow::WXLunaBitmapWindow(w panel = new WXLunaBitmapPanel(this); // 大きさをそれに固定 - Layout(); Fit(); // 更新タイマーはモニターパネル同様の 30Hz にしておく。