MFC下位图显示

以下内容WinCE5.0平台下,VS2008编译测试通过

 

 

1.    按钮上显示位图
    CString strPath = _T(".//bmp//test.bmp");
    CRect buttRect;
    m_Test.GetClientRect(&buttRect);
    HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), strPath,
        IMAGE_BITMAP, buttRect.Width(), buttRect.Height(),
        LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    m_Test.SetBitmap(hBmp);
   
2.    对话框显示位图
    CBitmap bmp;
    HBITMAP hBmp;
    CString strPath = _T(".//bmp//test.bmp");
    hBmp = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(), strPath,
        IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    bmp.Attach(hBmp);
    BITMAP bmpInfo;
    bmp.GetBitmap(&bmpInfo);
    CRect clientRect;
    GetClientRect(&clientRect);
    clientRect.NormalizeRect();

    CDC dcMem;
    dcMem.CreateCompatibleDC(GetDC());
    CBitmap *pBmp = (CBitmap *)dcMem.SelectObject(bmp);

    CDC *pDC = GetDC();
    SetStretchBltMode(pDC->GetSafeHdc(), HALFTONE);
    SetBrushOrgEx(pDC->GetSafeHdc(), 0, 0, NULL);
    pDC->StretchBlt(clientRect.left, clientRect.top, clientRect.Width(),
        clientRect.Height(), &dcMem, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY);
    ReleaseDC(pDC);

    DeleteDC(dcMem);
    DeleteObject(hBmp);
   
3.    CStatic控件显示位图
    方法1:
    {
        CString strPath = _T(".//bmp//test.bmp");
        CRect buttRect;
        CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC_001);
        pStatic->MoveWindow(0, 0, 300, 200);    //改变控件大小
        pStatic->ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
        pStatic->GetClientRect(&buttRect);
        HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), strPath,
            IMAGE_BITMAP, buttRect.Width(), buttRect.Height(),
            LR_LOADFROMFILE|LR_CREATEDIBSECTION);
        pStatic->SetBitmap(hBmp);
    }
   
   
方法 2:
    {
        CStatic  *pStatic=(CStatic *)GetDlgItem(IDC_STATIC_001);
        pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
   
        CBitmap  bitmap;
        CBrush brush;
        brush.CreateSolidBrush(RGB(255, 70, 0));
   
        CClientDC dc(this);
        CDC MemDC;
        size_t m_width = 200;
        size_t m_height = 150;
        bitmap.CreateCompatibleBitmap(&dc, m_width/4.0, m_height/4.0);
        MemDC.CreateCompatibleDC(&dc);
        CBitmap *oldBmp = (CBitmap*)MemDC.SelectObject(&bitmap);
   
        MemDC.Rectangle(CRect(0, 0, m_width/4.0, m_height/4.0));
        MemDC.FillRect(CRect(0, 0, m_width, m_height), &brush);
   
        MemDC.SelectObject(oldBmp);
        MemDC.DeleteDC();
   
        pStatic->SetBitmap((HBITMAP)bitmap.Detach());
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值