visual c で、ビットマップを読み込む方法
1120.bmpというファイルをvisual c++で読み込みたいのですが、初心者のため、いまいち方法が分かりません。
ネット上にビットマップの読み込みについて、
1 BITMAPFILEHEADERを読み込む(ビットマップで無い場合はじく)
2 BITMAPINFOHEADERを読み込む(16,256で無い場合ははじく)
3 BITMAPINFOHEADER構造体とRGBQUAD構造体の配列からなるBITMAPINFO構造体の領域を動的に確保する
4 CreateDIBSectionを使って、ビットマップビット列の領域を確保する
5 実際に描画する
6 プログラムが終了したときや、上書き読み込みをする場合は確保した領域を開放する
と書いてあったのですが、3から先がたぶん分からない状態で、3のところまでも合っているか分かりません。
もしも、分かる方いらっっしゃったらお願い致します。
今、以下のところまでファイルの記述が終わっています。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int bfType;
int bfSize;
int bfReserved1;
int bfReserved2;
int bfOffBits;
int biSize;
int biWidth;
int biHeight;
int biPlanes;
int biBitCount;
int biCompression;
int biSizeImage;
int biXPelsPerMeter;
int biYPelsPerMeter;
int biClrUsed;
int biClrImportant;
int rgbBlue;
int rgbGreen;
int rgbRed;
int rgbReserved;
fp = fopen("1120.bmp", "rb");
if(fp == NULL) printf("ファイルオープンに失敗しました。\n");
//BITMAPFILEHEADER構造体
fread(&bfType, 14, 1, fp);
fread(&bfSize, 4, 1, fp);
fread(&bfReserved1, 2, 1, fp);
fread(&bfReserved2, 2, 1, fp);
fread(&bfOffBits, 4, 1, fp);
//BITMAPINFOHEADER構造体
fread(&biSize, 4, 1, fp);
fread(&biWidth, 4, 1, fp);
fread(&biHeight, 4, 1, fp);
fread(&biPlanes, 2, 1, fp);
fread(&biBitCount, 2, 1, fp);
fread(&biCompression, 4, 1, fp);
fread(&biSizeImage, 4, 1, fp);
fread(&biXPelsPerMeter, 4, 1, fp);
fread(&biYPelsPerMeter, 4, 1, fp);
fread(&biClrUsed, 4, 1, fp);
fread(&biClrImportant, 4, 1, fp);
fclose(fp);
return 1;
}
お礼
>>Tacosan様 御回答ありがとうございました。 無事希望する処理を実装することができました。