Как растянуть растровое изображение на родительскую панель (wxWidgets Custom) - PullRequest
0 голосов
/ 17 сентября 2018

Снимок экрана Panel и пользовательский элемент внутри нее

Я установил wxButton, и он загружает растровые, png форматы в Panel справа. Но изображение переоснащается. Я хочу растянуть изображение на панель, когда он загружается кнопкой.

Вот функция кнопки, на всякий случай:

void rrFrame::testClick(wxCommandEvent& event)
{
    wxBitmap bmp;
    wxString strPath = wxT("img\\img1.png");

    bmp.LoadFile(strPath, wxBITMAP_TYPE_ANY);
    camFrame_wx->DrawBitmap(bmp, wxPoint(0, 0), false);
    //camFrame_wx is the variable name of 'Custom'
}

Полагаю, мне нужна функция растяжения или подгонки в конструкторе. Как это сделать?

1 Ответ

0 голосов
/ 17 сентября 2018

Я думаю, что самый простой способ сделать это - сначала загрузить файл изображения в wxImage , затем изменить масштаб wxImage и, наконец, преобразовать wxImage в wxBitmap.Вот так:

void rrFrame::testClick(wxCommandEvent& event)    
{
    wxString strPath = "img\\img1.png";
    wxImage im(strPath,wxBITMAP_TYPE_ANY );
    wxSize sz = camFrame_wx->GetSize();
    im.Rescale(sz.GetWidth(),sz.GetHeight(),wxIMAGE_QUALITY_HIGH );
    wxBitmap bmp(im);
    camFrame_wx->DrawBitmap(bmp, wxPoint(0, 0), false);
    //camFrame_wx is the variable name of 'Custom'
}

Два дополнительных комментария:

  1. Вам не нужен макрос wxT для строковых литералов в wxWidgets 3.0 или новее .
  2. Вы можете использовать другие опции, такие как wxIMAGE_QUALITY_NEAREST вместо wxIMAGE_QUALITY_HIGH, если вам требуется более быстрое изменение масштаба.Полный список доступен здесь .
...