版本:VS2015 语言:C++
前段时间去白空轨了,感觉快燃尽了。没有看Windows的书,所以博客也没更,不过请组织放心,从现在开始,即使是节假日,我也会仔细钻研DirectX的。
今天是第七章的完结,当时作者写书比较老了,还一直用的8位图,而8位图牵扯到调色板,所以他就一直在那边纠结,我就简单的看了一下,给大家介绍的也都是VS中能够调试出来的程序。
好了,进入正式的学习。
玩cocos的玩家们应该对Sprite不陌生,Sprite简单的来说就是一张图片嘛,从磁盘中加载到内存中然后显示到屏幕上,十分方便。而这次我就要介绍的就是在DirectX Windows程序中加载图片。
首先准备一章图片,因为作者使用的是BMP格式的,所以大家一定要注意图片的格式,普通的图片是用不了的,而且现在我写的程序只能使用24位图,所以需要一个史前的工具:
链接:http://pan.baidu.com/s/1qXJsAJi 密码:icca
用这个工具画一张图,并保存成bmp格式(我的代码中尺寸要求是300*300的):
嗯,就是一棵树。
好了,图片有了,怎么加载到程序中呢?看代码:
#define BITMAP_ID 0x4D42
// 定义BMP数据结构
typedef struct BITMAP_FILE_TAG
{
BITMAPFILEHEADER bitmapfileheader; //BMP文件头部
BITMAPINFOHEADER bitmapinfoheader; //BMP信息头部
PALETTEENTRY palette[256]; //调色板(但是在我们的程序中没有作用)
UCHAR *buffer; //数据
}BITMAP_FILE, *BITMAP_FILE_PTR;
BITMAP_FILE_PTR picture1; //我们的图片
// 翻转bmp图片
int Flip_Bitmap(UCHAR *image, int bytes_per_line, int height)
{
UCHAR* buffer;
int index;
if (!(buffer = (UCHAR*)malloc(bytes_per_line * height)))
{
popMessage(TEXT("malloc ERROR"));
ret