?? cbmploader.cpp
字號:
//======================================================================
/**
* @file CBMPLoader.cpp
*
* 項目描述: 3DS文件載入
* 文件描述: 載入位圖類
* 適用平臺: Windows98/2000/NT/XP
*
* 作者: WWBOSS
* 電子郵件: wwboss123@gmail.com
* 創建日期: 2006-11-23
* 修改日期: 2006-11-26
*
*/
//======================================================================
#include"CBMPLoader.h" /**< 包含頭文件 */
/** 構造函數 */
CBMPLoader::CBMPLoader()
{
/** 初始化成員值為0 */
image = 0;
imageWidth = 0;
imageHeight = 0;
}
/** 析構函數 */
CBMPLoader::~CBMPLoader()
{
FreeImage(); /**< 釋放圖像數據占據的內存 */
}
/** 裝載一個位圖文件 */
bool CBMPLoader::LoadBitmap(const char *file)
{
FILE *pFile = 0; /**< 文件指針 */
/** 創建位圖文件信息和位圖文件頭結構 */
BITMAPINFOHEADER bitmapInfoHeader;
BITMAPFILEHEADER header;
unsigned char textureColors = 0;/**< 用于將圖像顏色從BGR變換到RGB */
/** 打開文件,并檢查錯誤 */
pFile = fopen(file, "rb");
if(pFile == 0) return false;
/** 讀入位圖文件頭信息 */
fread(&header, sizeof(BITMAPFILEHEADER), 1, pFile);
/** 檢查該文件是否為位圖文件 */
if(header.bfType != BITMAP_ID)
{
fclose(pFile); /**< 若不是位圖文件,則關閉文件并返回 */
return false;
}
/** 讀入位圖文件信息 */
fread(&bitmapInfoHeader, sizeof(BITMAPINFOHEADER), 1, pFile);
/** 保存圖像的寬度和高度 */
imageWidth = bitmapInfoHeader.biWidth;
imageHeight = bitmapInfoHeader.biHeight;
/** 確保讀取數據的大小 */
if(bitmapInfoHeader.biSizeImage == 0)
bitmapInfoHeader.biSizeImage = bitmapInfoHeader.biWidth *
bitmapInfoHeader.biHeight * 3;
/** 將指針移到數據開始位置 */
fseek(pFile, header.bfOffBits, SEEK_SET);
/** 分配內存 */
image = new unsigned char[bitmapInfoHeader.biSizeImage];
/** 檢查內存分配是否成功 */
if(!image) /**< 若分配內存失敗則返回 */
{
delete[] image;
fclose(pFile);
return false;
}
/** 讀取圖像數據 */
fread(image, 1, bitmapInfoHeader.biSizeImage, pFile);
/** 將圖像顏色數據格式進行交換,由BGR轉換為RGB */
for(int index = 0; index < (int)bitmapInfoHeader.biSizeImage; index+=3)
{
textureColors = image[index];
image[index] = image[index + 2];
image[index + 2] = textureColors;
}
fclose(pFile); /**< 關閉文件 */
return true; /**< 成功返回 */
}
/** 釋放內存 */
void CBMPLoader::FreeImage()
{
/** 釋放分配的內存 */
if(image)
{
delete[] image;
image = 0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -