为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[宝典]vc 游戏编程----游戏画面特效制作1

2018-02-04 4页 doc 45KB 15阅读

用户头像

is_633423

暂无简介

举报
[宝典]vc 游戏编程----游戏画面特效制作1[宝典]vc 游戏编程----游戏画面特效制作1 有时候,我们需要在画面上显示一张角色的图像,而这张图片是有自己的背景的,要是直接贴到了游戏的画面中,就会出项覆盖游戏画面。显示出的效果特别不好,这里我们可以用到透明效果来处理。 其中,原理就是用BitBlt() 的Raster值运算去掉原图片的背影。但是只适用于原图背景为黑色,才会看到效果。 如图,左边部分为前景图,右边部分为屏蔽图 前景图的背景必须为黑色,屏蔽图的背景为白色 以下为显示的背景图 我们怎么样使用则会图来处理透明呢,其实就是Raster运算。 将屏蔽图和...
[宝典]vc  游戏编程----游戏画面特效制作1
[宝典]vc 游戏编程----游戏画面特效制作1 有时候,我们需要在画面上显示一张角色的图像,而这张图片是有自己的背景的,要是直接贴到了游戏的画面中,就会出项覆盖游戏画面。显示出的效果特别不好,这里我们可以用到透明效果来处理。 其中,原理就是用BitBlt() 的Raster值运算去掉原图片的背影。但是只适用于原图背景为黑色,才会看到效果。 如图,左边部分为前景图,右边部分为屏蔽图 前景图的背景必须为黑色,屏蔽图的背景为白色 以下为显示的背景图 我们怎么样使用则会图来处理透明呢,其实就是Raster运算。 将屏蔽图和背景图做“AND”运算,贴到目的DC; 再将前景图和背景图做“OR”运算,贴到目的DC; 现在开始编写程序: 在VS2008中新建Win32程序,使用VC默认的框架。 首先定义全局变量: [cpp] view plaincopyprint? 1. HBITMAP bg, dra; //用来存储背景与前景图 2. HDC hdc; //用来暂时存储位图的DC 然后在InitInstance()函数中,添加代码,绘制图形。 [cpp] view plaincopyprint? 1. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 2. { 3. HWND hWnd; 4. HDC hdc; 5. 6. hInst = hInstance; // 将实例句柄存储在全局变量中 7. 8. hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWIN DOW, 9. CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); 10. 11. if (!hWnd) 12. { 13. return FALSE; 14. } 15. 16. MoveWindow(hWnd, 50, 50, 1024, 768, true); 17. ShowWindow(hWnd, nCmdShow); 18. UpdateWindow(hWnd); 19. //建立窗口DC兼容DC 20. hdc = GetDC(hWnd); 21. mdc = CreateCompatibleDC(hdc); 22. //载入位图 23. bg = (HBITMAP)LoadImage(NULL, L"bg.bmp", IMAGE_BITMAP, 1024, 7 68, LR_LOADFROMFILE); 24. dra = (HBITMAP)LoadImage(NULL, L"dra.bmp", IMAGE_BITMAP, 170, 9 9, LR_LOADFROMFILE); 25. 26. Paint(hdc); //绘制透明位图 27. ReleaseDC(hWnd, hdc); //释放DC 28. return TRUE; 29. } 其中paint() 中代码: [cpp] view plaincopyprint? 1. void Paint(HDC hdc) 2. { 3. //将背景图贴入窗口 4. SelectObject(mdc, bg); 5. BitBlt(hdc, 0, 0, 1024, 768, mdc, 0, 0, SRCCOPY); 6. // 7. SelectObject(mdc, dra); 8. BitBlt(hdc, 580, 560, 85, 99, mdc, 85, 0, SRCAND); 9. BitBlt(hdc, 580, 560, 85, 99, mdc, 0 ,0 ,SRCPAINT); 10. } 最后在WndProc函数中WM_PAINT消息中添加重绘 [cpp] view plaincopyprint? 1. case WM_PAINT: 2. hdc = BeginPaint(hWnd, &ps); 3. // TODO: 在此添加任意绘图代码... 4. Paint(hdc); 5. EndPaint(hWnd, &ps); 6. break; 编译运行程序:
/
本文档为【[宝典]vc 游戏编程----游戏画面特效制作1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索