wxWidgets绘制位图导致崩溃?

时间:2016-04-29 19:38:43

标签: bitmap crash wxwidgets

我正在尝试使用wxWidgets创建一个大型位图,绘制到该位图,然后覆盖到小于位图的GUI。下面的代码有效,但如果位图大小是宽度和宽度的3倍或更多,则会崩溃。 GUI空间的高度..这可以达到大约4000x2000 px但我需要它大于那个。奇怪的是,我尝试基本上裁剪较大的位图,然后绘制较小的裁剪版本..但它仍然崩溃。有什么想法吗?

它崩溃在mdc-> DrawBitmap(bmp,0,0,true);

我收到一条错误消息:断言"断言失败"在wxBitmap :: GetRawData()中失败:wxBitmap :: GetRawData()中的位图类型不正确

  int bwidth = vp->pix_width * 3;
    int bheight = vp->pix_height * 3;
   wxBitmap tbmp(bwidth,bheight);
    tbmp.UseAlpha();

    wxMemoryDC memDC (tbmp);
    wxGCDC dc(memDC);
    //dc.SetBackground(*wxTRANSPARENT_BRUSH);
    dc.SetBackground(*wxWHITE_BRUSH);
    dc.Clear();

    dc.SetPen(wxPen(colour, 10));

//  if (chartScale < 1000000){

        GetCanvasPixLL(vp, &p2, maxlat, minlon);
        GetCanvasPixLL(vp, &boat, m_pfix.Lat, m_pfix.Lon);

        b1.x = boat.x + 50;
        b1.y = boat.y + 20;
        b2.x = boat.x - 50;
        b2.y = boat.y + 20;

        dc.DrawLine(b1, b2);
        memDC.SelectObject(wxNullBitmap);

        wxRect subSize(0, 0, (vp->pix_width)/1.5, (vp->pix_height)/1.5);

        const wxBitmap bmp = tbmp.GetSubBitmap(subSize);

        mdc->DrawBitmap(bmp, 0,0,true);

更新

这是固定的......我注意到我没有明确设置位深度。当创建低于特定大小的位图时,它似乎产生32位深度图像。大于一定大小,位深度降至24.这是发生崩溃的时候。

我通过以下方式明确将位深度设置为32位:

wxBitmap tbmp(bwidth,bheight, 32);

并且没有任何崩溃。我不知道为什么这会导致坠机事故。如果有人能够启发我,那将不胜感激!

0 个答案:

没有答案