vc游戏--03--绘制位图

绘制位图的步骤:

1.从文件中加载位图(BITMAP)对象

2.建立一个与窗口DC兼容的内存DC;

3.内存DC使用步骤1建立位图对象

4.将内存dc的内容粘贴到窗口dc,显示图片

一。加载位图:

LoadImage(HINSTANCE 来源实体,LPCTSTR  名称,UNIT位图类型,int宽,int高,UNIT加载方式);

二。建立与窗口DC兼容的内存DC

HDC CreateCompatibleDC(HDC hdc);

和DC一样,建立后要释放DC

三。选用位图对象

SelectObject();

四。贴图

BOOL BitBlt(HDC 目标dc,int 目标dc x坐标,int 目标dc y坐标,int 贴到目的dc的宽度,int 高度,HDC 来源dc,int 来源dcx坐标,int 来源dc y坐标,DWORD 贴图方式);

假设建立一个内存dc为mdc,里面加载了位图,下面将mdc的位图贴图到窗口hdc

BitBlt(hdc,50,50,350,250,mdc,200,100,SRCCOP0Y);

从图片的(200,100)开始复制(350,250)的大小到窗口(50,50)的位置;

代码解释:

全局变量:

HINSTANCE hInst;								// 当前实例
TCHAR szTitle[MAX_LOADSTRING];					// 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];			// 主窗口类名
HBITMAP hbmp;//位图对象
HDC mdc;//内存dc句柄

初始化窗口函数:

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   hdc=GetDC(hWnd);
   mdc=CreateCompatibleDC(hdc);
   hbmp =(HBITMAP)LoadImage(NULL,_T("G:\\vc\\vc2010\\vc++game\\photo_03\\img\\haizei.bmp"),IMAGE_BITMAP,600,450,LR_LOADFROMFILE);
   SelectObject(mdc,hbmp);
   MyPaint(hdc);
   ReleaseDC(hWnd,hdc);
   return TRUE;
先获取窗口dc再创建一个与hdc兼容的内存dc

将位图加载到对象hbmp

将位图对象存到内存dc中


回调函数:

	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: 在此添加任意绘图代码...
		MyPaint(hdc);
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		DeleteDC(mdc);
		DeleteObject(hbmp);
		PostQuitMessage(0);
		break;

MyPaint:

void MyPaint(HDC hdc)
{
	BitBlt(hdc,0,0,640,450,mdc,0,0,SRCCOPY);
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值