加载显示位图

来源:互联网 发布:张德芬哪本书最好知乎 编辑:程序博客网 时间:2024/06/05 03:45

//@@@@@@@@@@@@@@@@@@@@@@@
//最简单的答案

CClientDC dc(this);//取得客户区内存DC

CDC THDC;
HBITMAP THBM;
THDC.CreateCompatibleDC(0);//创建相关场景
THBM=(HBITMAP)LoadImage(NULL,"D://x.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);//载入位图
BITMAP bmp;
GetObject(THBM,sizeof(bmp),&bmp);//取得位图信息
SelectObject(THDC,THBM);//选入位图至内存DC
DeleteObject(THBM);//删除位图

BitBlt(dc,0,0,bmp.bmWidth,bmp.bmHeight,THDC,0,0,SRCCOPY);//将临时内存DC中的位图画到客户区中

//首先在D盘根目录下放一个标准.bmp格式的位图 再将这些代码写入一个按钮事件中 点击按键 就会在窗体的左上角看到图形了. 

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//还有Win32中
HWND hwnd=this->m_hWnd;//
 HDC hdc,MemDc;
 hdc=::GetDC(hwnd);      //获取相关场景DC
 MemDc=CreateCompatibleDC(hdc);   //创建相关场景的内存兼容DC

 HBITMAP hBitmap;
 hBitmap=(HBITMAP)::LoadImage(NULL,"c://recv~~.bmp",
  IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //载入位图
 
 BITMAP bmp;
 GetObject(hBitmap,sizeof(bmp),&bmp); //取得位图信息
 SelectObject(MemDc,hBitmap);   //选入位图至内存DC
 DeleteObject(hBitmap);     //删除位图
 
 //将临时内存DC中的位图画到客户区中
 //BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,MemDc,0,0,SRCCOPY);
 RECT rect;
 ::GetClientRect(hwnd,&rect);
 ::StretchBlt(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top,
  MemDc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
 ::ReleaseDC(hwnd,hdc);     //释放DC

原创粉丝点击