先准备好地图的小图片:

//全局变量
HDC mdc;
HBITMAP fullmap;
const int rows = 8, cols = 8;

//--------------------------------------------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,
0, 1, 2, 0, 0, 0, 1, 1,
2, 0, 0, 0, 0, 0, 0, 1,
2, 0, 0, 1, 1, 0, 2, 2,
2, 2, 0, 0, 2, 2, 0, 0,
0, 2, 2, 2, 2, 0, 0, 1,
0, 2, 2, 2, 2, 2, 1, 1
};
//DC
hdc = GetDC(hwnd);
mdc = CreateCompatibleDC(hdc);
tmpdc = CreateCompatibleDC(hdc);
//建立一空白的位图,其宽与高分别为"行数*图块宽" 与 "列数*图块高"
fullmap = CreateCompatibleBitmap(hdc, cols * 50, rows * 50);
//将fullmap存入mdc中
SelectObject(mdc, fullmap);

HBITMAP map[3];
char mapname[20] = "";

//加载各图块图像
for (int i = 0; i < 3; i++)
{
wsprintf(mapname, "map%d.bmp", i);
map[i] = (HBITMAP)LoadImage(NULL, mapname, IMAGE_BITMAP, 50, 50, LR_LOADFROMFILE);
}

//按照mapIndex数组的定义取出对应的图块,进行地图拼接
for (int i = 0; i < rows * cols; i++)
{
int x, y;
SelectObject(tmpdc, map[mapIndex[i]]);
//i / cols;//求列编号
//i % cols;//求行编号
x = i % cols * 50;//求贴图x坐标
y = i / cols * 50;//求贴图y坐标

BitBlt(mdc, x, y, 50, 50, tmpdc, 0, 0, SRCCOPY);
}

MyPaint(hdc);

ReleaseDC(hwnd, hdc);
DeleteDC(tmpdc);

return TRUE;
}

//--------------------------------------------MyPaint() 函数---------------------------------------------------
//绘制图形
//-------------------------------------------------------------------------------------------------------------
void MyPaint(HDC hdc)
{
SelectObject(mdc, fullmap);
BitBlt(hdc, 10, 10, cols * 50, rows * 50, mdc, 0, 0, SRCCOPY);
}

//--------------------------------------------Game_CleanUp() 函数----------------------------------------------
//资源清理函数,在此函数中进行退出前的资源的清理工作
//-------------------------------------------------------------------------------------------------------------
BOOL Game_CleanUp(HWND hwnd)
{
DeleteDC(mdc);
DeleteObject(fullmap);
return TRUE;
}

如需整体运行框架,请点击: 游戏框架

游戏开发的梦想

梦开始的地方

010--VS2013 C++ 平面地图贴图的更多相关文章

  1. [游戏模版10] Win32 平面地图贴图 正

    >_<:picture resource >_<:If you master the ways of mapping picture,then this problem is ...

  2. three.js通过canvas实现球体世界平面地图

    概况如下: 1.SphereGeometry实现自转的地球: 2.THREE.CatmullRomCurve3实现球体线条地图点确定: 3.THREE.Math.degToRad,Math.sin,M ...

  3. vs2013\2015UML系列之-类图

    1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...

  4. 013--VS2013 C++ 地图贴图-其它格式图片

    //--------------------------------------------InitInstance() 函数------------------------------------- ...

  5. 012--VS2013 C++ 斜角景物地图贴图-位图

    因为bmp图片上传不了,只能截图啦 //全局变量HDC mdc;HBITMAP fullmap;//声明位图对象,在初始化函数中完成的斜角地图会保存在这个位图中const int rows = 10, ...

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

    准备好的图片 //全局变量HDC mdc;HBITMAP fullmap;//声明位图对象,在初始化函数中完成的斜角地图会保存在这个位图中const int rows = 10, cols = 10; ...

  7. Web地图导图总结

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 地图端展示了各类制图效果,用户希望可以一键生成报表,其中核心 ...

  8. 使用VS2013逆向生成UML类图

    引自http://blog.csdn.net/funnyfu0101/article/details/7705173 首先.打开工程,[体系结构]->[新建关系图] 生成一个类图 然后[体系结构 ...

  9. 【高德地图API】VS2012或者VS2013添加高德地图v2.1.1版本SDK失败

    可能由于v2.1.1版本SDK可能是在Win8.1环境下编译[这里有许多的原因,系统升级,安装VS2013等等] 有童鞋在操作正常的情况下添加SDK失败,提示版本不兼容. 如下图: 编辑项目  *.c ...

随机推荐

  1. ios项目记录

    1,如何隐藏状态栏 在基类中重载UIViewController.h中的这个方法 - (BOOL)prefersStatusBarHidden { // iOS7后,[[UIApplication s ...

  2. CI系统

  3. 使用python脚本实现基于指定字符串的文本排序

    朋友用ansible导出了一个文件,文件中包含上千台机器的磁盘信息,他想要知道哪些机器最需要赶紧扩磁盘.思路是,按剩余磁盘空间百分数,从小到大对文本内容重新排序.下面是具体实现. 源文件ip.txt的 ...

  4. webstorm & phpstorm破解

    webstorm: http://idea.qinxi1992.cn/ http://idea.goxz.gq http://v2mc.net:1017 http://idea.imsxm.com h ...

  5. Volume serial number could associate file existence on certain volume

    When it comes to lnk file analysis, we should put more emphasis on the volume serial number. It coul ...

  6. Cent OS yum 安装 Adobe flash player

    桌面打开浏览器访问:http://get.adobe.com/cn/flashplayer/.网页会判断操作系统和浏览器并下载 Flash Player(支持Firefox浏览器). 或者直接下载: ...

  7. javaSE第十八天

    第十八天    192 1:Map(掌握)    192 (1)定义:    192 (2)Map和Collection的区别?    192 (3)Map接口功能概述(自己补齐)    192 A: ...

  8. Java学生管理系统项目案例

    这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...

  9. Connect to a Windows PC from Ubuntu via Remote Desktop Connection

    http://www.7tutorials.com/connecting-windows-remote-desktop-ubuntu A useful feature of Windows is be ...

  10. C# 判断一字符串是否为合法数字(正则表达式)

    判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; ...