wxWidgets控件上显示图像

wxWidgets 控件上显示图像
目的:codeblock工作环境,在wxWidgets的指定控件位置上显示图像。
工作环境:CodeBlock17.12, wxWidgets3.0.4

关键步骤简述:
1st:wxImage::LoadFile(); 
2nd:  wxBitmap m_bmp4Show = wxBitmap( m_wxImage );//将wxImage转为wxBitmap
3rd:wxClientDC dc(my_wxPanel);//获取控件的画板
4th:dc.Clear();//清理前面的图像数据
    5th:dc.DrawBitmap(m_bmp4Show,0,0);//画图

Step1:控件建议使用 wxPanel、wxScrollWindow,方便图像的显示
在这里插入图片描述

wxScrolledWindow *Panel1 = new wxScrolledWindow(this, ID_SCROLLEDWINDOW1, wxDefaultPosition, wxSize(250,310), wxVSCROLL|wxHSCROLL, _T("ID_SCROLLEDWINDOW1"));

Step2:load图像的时候,使用wxClientDC 直接画图;

 //wxImage m_image;
    if ( !m_image.LoadFile( wxT("E:\\MedicalImage\\lenaTest2.jpg"), wxBITMAP_TYPE_ANY ) )
    {
        wxLogError(wxT("Can't load BMP image"));
    }
    else
    {
       // wxBitmap m_bmp4Show = wxBitmap( m_image );
       m_bmp4Show= wxBitmap( m_image );
        wxClientDC dc(Panel1); //在控件的画图板
        dc.Clear();//清理前面的图像数据
        dc.DrawBitmap(m_bmp4Show,0,0);
       Update();//这用于刷新其它控件
}

Step3:重载OnPaint(),实现UI刷新的时候重新画图;

void ImageFrameFrame::OnPaint(wxPaintEvent& WXUNUSED(event))
{
    if(m_bmp4Show.IsOk()){
        wxClientDC dc(Panel1);
        //wxPaintDC dc(Panel1);//有时候图像部分区域刷新有问题。
        //dc.Clear();//清理前面的图像数据 ,但是会导致图像闪烁
        dc.DrawBitmap(m_bmp4Show,0,0);
        Update();
   }
}

运行的结果:
在这里插入图片描述
代码下载地址:https://download.csdn.net/download/qq_23313467/12279417

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值