设为首页 加入收藏

TOP

(Visual C++)游戏开发笔记十四:游戏画面绘图(四)华丽的CImage类 (四)
2014-11-23 20:17:23 来源: 作者: 【 】 浏览:152
Tags:Visual 游戏 开发 笔记 十四 游戏画面 绘图 华丽 CImage
hWnd;
HDC hdc;
hInst = hInstance;
hWnd = CreateWindow("canvas", "浅墨的绘图窗口" , WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
MoveWindow(hWnd,10,10,600,444,true);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
hdc = GetDC(hWnd); //获得窗口DC
mdc = CreateCompatibleDC(hdc); //创建与窗口兼容的内存DC(mdc)
bg = (HBITMAP)LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,600,444,LR_LOADFROMFILE);

MyPaint(hdc);
ReleaseDC(hWnd,hdc);
return TRUE;
}
//****自定义绘图函数*********************************
//透明贴图
void MyPaint(HDC hdc)
{
SelectObject(mdc,bg);
BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY); //先将背景图贴到显示窗口中
CImage image; //定义一个CImage对象,用于透明贴图
CString str; //定义一个CString对象,用于存放文件名字符串
str="onion.png"; //将字符串赋值为文件名
image.Load(str); //在image中载入图像文件
image.Draw(hdc,120,180,85,113,0,0,85,113); //调用Draw进行透明贴图
//或者为image.TransparentBlt(hdc, 120, 180, 85, 113,CLR_INVALID );//调用TransparentBlt进行透明贴图
image.Destroy();
}
//****消息处理函数**********************************
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT: //窗口重绘消息
hdc = BeginPaint(hWnd, &ps);
MyPaint(hdc);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY: //窗口结束消息
DeleteDC(mdc);
DeleteObject(bg);
PostQuitMessage(0);
break;
default: //其他消息
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


最后得到的效果图如下:


我们可以改变CImage::Draw函数的参数值,让“洋葱头”出现在地图不同的地方。




通过这个实例可以发现,用CImage类进行透明贴图,实在是方便多了。


本节笔记到这里就结束了,由于近期在做一个纯flash的网站,更新速度和评论的回复都不像往常那么及时,希望大家能够体谅。

本节笔记的源代码请点击这里下载:
【Visual C++】Code_Note_14http://download.csdn.net/detail/zhmxy555/4196333

感谢一直支持【Visual C++】游戏开发笔记系列专栏的朋友们,也请大家继续关注我的专栏,我一有时间就会把自己的学习心得,觉得比较好的知识点写出来和大家一起分享。


精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习,共同进步。

大家看过后觉得值得一看的话,可以顶一下这篇文章,你们的支持是我继续写下去的动力~

如果文章中有什么疏漏的地方,也请大家指正。也希望大家可以多留言来和我探讨编程相关的问题。


最后,谢谢你们一直的支持~~~


The end.


摘自 枫落★流年

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇(Visual C++)游戏开发笔记十五.. 下一篇VC++----为CListBox加上智能水平..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: