如何将位图拉伸到父面板(wxWidgets 自定义)

How to Stretch Bitmap into Parent Panel (wxWidgets Custom)

本文关键字:wxWidgets 自定义 位图      更新时间:2023-10-16

面板及其内部自定义的屏幕截图

我设置了一个wxButton,它将位图,png格式加载到右侧的面板。但是图像过于拟合。我想在通过按钮加载图像时将图像串到面板。

这是按钮的功能,以防万一:

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'
}

我想我需要构造函数中的拉伸或适合函数。怎么做?

我认为最简单的方法是先将图像文件加载到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. 在 wxWidgets 3.0 或更高版本中,不需要字符串文本的 wxT 宏。
  2. 如果需要更快的重新缩放,可以使用其他选项(例如wxIMAGE_QUALITY_NEAREST而不是wxIMAGE_QUALITY_HIGH(。 完整列表可在此处获得。