011--VS2013 C++ 斜角地图贴图

准备好的图片

//全局变量
HDC mdc;
HBITMAP fullmap;//声明位图对象,在初始化函数中完成的斜角地图会保存在这个位图中
const int rows = 10, cols = 10;
//--------------------------------------------InitInstance() 函数----------------------------------------------
//加载资源
//-------------------------------------------------------------------------------------------------------------
BOOL InitInstance(HINSTANCE hInstance, int nShowCmd)
{
HWND hwnd;
HDC hdc, tmpdc;
//创建窗口第三步:正式创建窗口
//创建窗口函数
hwnd = CreateWindow("GameClass", WINDOW_TITLE, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hwnd)
{
return FALSE;
}
//创建窗口第四步:窗口的移动,显示和更新
MoveWindow(hwnd, 250, 80, WINDOW_WIDTH, WINDOW_HEIGHT, true);//调整窗口显示时的位置及窗口的大小
ShowWindow(hwnd, nShowCmd);//设定显示窗口时的状态
UpdateWindow(hwnd);//将窗口绘制于显示设备上
int mapIndex[rows * cols] =
{
0, 1, 2, 2, 0, 1, 0, 1, 2, 0,
0, 1, 2, 0, 3, 0, 1, 1, 1, 2,
2, 0, 0, 3, 3, 0, 0, 1, 1, 2,
2, 0, 0, 3, 1, 0, 2, 2, 1, 3,
2, 2, 0, 0, 2, 2, 0, 0, 1, 2,
0, 2, 2, 2, 2, 0, 0, 1, 1, 2,
0, 2, 2, 2, 2, 2, 3, 1, 1, 3,
0, 2, 2, 2, 2, 2, 3, 1, 1, 2,
0, 2, 2, 2, 2, 3, 1, 1, 1, 2
};
hdc = GetDC(hwnd);
mdc = CreateCompatibleDC(hdc);
tmpdc = CreateCompatibleDC(hdc);
HBITMAP map[4];
char mapname[20] = "";
//设定第一个图块的起始坐标,设定x轴上的坐标xstart 是将图块放在整个拼接地图的中间位置
int xstart = 32 * (rows - 1), ystart = 0;
//加载背景图,并选用到mdc中
fullmap = (HBITMAP)LoadImage(NULL, "bg.bmp", IMAGE_BITMAP, 800, 600, LR_LOADFROMFILE);
//将fullmap存入mdc中
SelectObject(mdc, fullmap);
//加载各图块图像
for (int i = 0; i < 4; i++)
{
//取得各个图块并存于"map[i]"中
wsprintf(mapname, "map%d.bmp", i);
map[i] = (HBITMAP)LoadImage(NULL, mapname, IMAGE_BITMAP, 128, 32, LR_LOADFROMFILE);
}
//按照mapIndex数组的定义取出对应的图块,进行地图拼接
for (int i = 0; i < rows * cols; i++)
{
int x, y;
//根据 mapIndex[i] 中的代号选取对应的图块到tmpdc中
SelectObject(tmpdc, map[mapIndex[i]]);
//i / cols;//求列编号
//i % cols;//求行编号
x = xstart + i % cols * 32 + i / cols *(-32);//求贴图x坐标
y = ystart + i / cols * 16 + i % cols * 16;//求贴图y坐标
//在mdc进行透明贴图
BitBlt(mdc, x, y, 64, 32, tmpdc, 64, 0, SRCAND);
BitBlt(mdc, x, y, 64, 32, tmpdc, 0, 0, SRCPAINT);
}
MyPaint(hdc);
ReleaseDC(hwnd, hdc);
DeleteDC(tmpdc);
return TRUE;
}
//--------------------------------------------MyPaint() 函数---------------------------------------------------
//绘制图形
//-------------------------------------------------------------------------------------------------------------
void MyPaint(HDC hdc)
{
SelectObject(mdc, fullmap);
BitBlt(hdc, 0, 0, 800, 600, mdc, 0, 0, SRCCOPY);
}
//--------------------------------------------Game_CleanUp() 函数----------------------------------------------
//资源清理函数,在此函数中进行退出前的资源的清理工作
//-------------------------------------------------------------------------------------------------------------
BOOL Game_CleanUp(HWND hwnd)
{
DeleteDC(mdc);
DeleteObject(fullmap);
return TRUE;
}
如需整体运行框架,请点击: 游戏框架
游戏开发的梦想
梦开始的地方
011--VS2013 C++ 斜角地图贴图的更多相关文章
- 012--VS2013 C++ 斜角景物地图贴图-位图
因为bmp图片上传不了,只能截图啦 //全局变量HDC mdc;HBITMAP fullmap;//声明位图对象,在初始化函数中完成的斜角地图会保存在这个位图中const int rows = 10, ...
- vs2013\2015UML系列之-类图
1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...
- [游戏模版10] Win32 平面地图贴图 正
>_<:picture resource >_<:If you master the ways of mapping picture,then this problem is ...
- 013--VS2013 C++ 地图贴图-其它格式图片
//--------------------------------------------InitInstance() 函数------------------------------------- ...
- 010--VS2013 C++ 平面地图贴图
先准备好地图的小图片: //全局变量HDC mdc;HBITMAP fullmap;const int rows = 8, cols = 8; //-------------------------- ...
- Web地图导图总结
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 地图端展示了各类制图效果,用户希望可以一键生成报表,其中核心 ...
- 使用VS2013逆向生成UML类图
引自http://blog.csdn.net/funnyfu0101/article/details/7705173 首先.打开工程,[体系结构]->[新建关系图] 生成一个类图 然后[体系结构 ...
- 【高德地图API】VS2012或者VS2013添加高德地图v2.1.1版本SDK失败
可能由于v2.1.1版本SDK可能是在Win8.1环境下编译[这里有许多的原因,系统升级,安装VS2013等等] 有童鞋在操作正常的情况下添加SDK失败,提示版本不兼容. 如下图: 编辑项目 *.c ...
- svg格式的中国地图轮廓图
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C ...
随机推荐
- [drp 6]接口和抽象类的区别,及其应用场景
导读:在很多时候,接口和抽象类可以替换.发现这个问题,还是之前学习设计模式的时候,看到那个UML图发现的.那么,究竟在什么时候使用接口,什么时候使用抽象类呢?现在结合这个项目,做一个总结. 一.接口 ...
- Could not resolve this reference. Could not locate the assembly
Rebuild Project 的时候提示找不到NewtonJson 组件,重新添加了Dll(Newtonsoft.Json.dll),依然抛错. 解决办法,将Dll(Newtonsoft.Json. ...
- [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程
[微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程 在朋友圈看到一款疯转的H5小游戏,想要copy,什么?只能在微信里打开?小样,图样图森破,限制了oauth.微信浏览器内打开, ...
- Tomcat 7优化前及优化后的性能对比
Tomcat 7在我们日常开发.测试.生产环境都会使用到,但对于大部分开发人员来说,对其性能还是没有多大了解.本文就对它做一次性能测试,对比优化前后的性能区别. 一.运行环境 CPU: Intel(R ...
- 优秀的富文本编辑器 Kindeditor
<textarea name="txtbody" style="width:100%;height:320px;" > {$article.txt} ...
- 一个Brushes笔画应用ios源码完整版
效果很不错的画笔App,提供几十种不同的画笔,包括毛笔画笔.拥有绘画App的一些基本功能,包括颜色选择.绘画保存,支持撤销(undo).重做(redo)以及橡皮擦功能等等,甚至还支持类似PhotoSh ...
- ADO.NET中的DataReader详解
使用特性 原理图 PS:Read()使指针下移,同时销毁上一条.所以SqlDataReader是只进的. GetValue()是找当前行中的列 SqlDataReader()特性. 1)只进的 上面 ...
- s3c6410_中断
参考: 1)<USER'S MANUAL-S3C6410X>Chapter 10 GPIO, Chapter 12 VECTORED INTERRUPT CONTROLLER 2)< ...
- Winform开发常用控件之Checkbox和CheckedListBox
Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...
- [leetcode]_Pascal's Triangle
题目:题目本身不存在问题,生成Pascal三角. 注意: ArrayList的使用: 1.ArrayList申请二维数组. ArrayList<ArrayList<Integer>& ...