首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

导入资源 选择bit地图 是否可以让资源在界面下显示出来

2013-02-24 
导入资源 选择bitmap 是否可以让资源在界面上显示出来我想导入2张bitmap或者jpeg小图片,程序开始运行时显

导入资源 选择bitmap 是否可以让资源在界面上显示出来
我想导入2张bitmap或者jpeg小图片,程序开始运行时显示a图片,当接收到某消息时,在a图片的位置上显示b图片(a,b图片的尺寸相同),如何实现?
[解决办法]
比如点击按钮,对某个标志为true.

然后invalidate触发onpaint

onapint代码;

if()
{

}

else
{

}



if, else里均调用strectblt即可


[解决办法]


#ifndef__SAFE_DELETE_GDIOBJ__//删除GDI句柄
#define__SAFE_DELETE_GDIOBJ__(hObj)\
if(hObj)\
{DeleteObject(hObj);\
hObj = NULL;\
}
#endif



void xxxx::OnPaint()
{
        RECT rtWnd = {0};
GetClientRect(&rtWnd);
        m_lWndWidth = rtWnd.right;
m_lWndHeight = rtWnd.bottom;

PAINTSTRUCT ps = {0};
::BeginPaint(m_hWnd,&ps);
HDC hDC = CreateCompatibleDC(ps.hdc);
HBITMAP bmpCompatible = CreateCompatibleBitmap(ps.hdc,m_lWndWidth,m_lWndHeight);
HGDIOBJ oldCompatible = SelectObject(hDC,bmpCompatible);

        //贴图
          if(标识位)
        {
            DrawBitMap(hDC,ResID1);
        }
        else
            DrawBitMap(hDC,ResID2);

        SelectObject(hDC,oldCompatible);
DeleteObject(bmpCompatible);
DeleteDC(hDC);
::EndPaint(m_hWnd,&ps);
}

void xxxx::DrawBitMap(HDC hDC,UINT ResID)
{
        long lbmWidth(0),lbmHeight(0);//图片长、宽
BITMAPbitMapInfo;
memset(&bitMapInfo,0,sizeof(BITMAP));
        //获取图片信息
HINSTANCE hInstance = AfxGetInstanceHandle();
HBITMAP hBitMap = LoadLocalBitMap(hInstance,0,0,ResID);
GetObject(hBitMap,sizeof(BITMAP),&bitMapInfo);
lbmWidth = bitMapInfo.bmWidth;
lbmHeight = bitMapInfo.bmHeight;

CopyFullBitmap(hDC,hBitMap,0,0,lbmWidth,lbmHeight);
        __SAFE_DELETE_GDIOBJ__(hBitMap);
}

void xxxx::CopyFullBitmap(HDC hDC,HBITMAP hBitmap,long x,long y,long Width,long Height)
{
HDC dcMem=CreateCompatibleDC(hDC);
HGDIOBJ oldBmp=SelectObject(dcMem,hBitmap);
BitBlt(hDC,x,y,Width,Height,dcMem,0,0,SRCCOPY);
SelectObject(dcMem,oldBmp);
DeleteDC(dcMem);
}

[解决办法]
两张图片使用一个hbitmap

当收到某个消息后loadbitmap(B)

就可以了!

热点排行