生成一幅windows位图:TestBmp,要…
来源:互联网 发布:如何隐藏域名信息 编辑:程序博客网 时间:2024/06/05 20:44
// TestBmp.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
using namespace std;
long const m_Width = 32;
long const m_Height = 32;
int _tmain(int argc, _TCHAR* argv[])
{
BITMAPFILEHEADER bitmapFileHead;
BITMAPINFOHEADER bitmapInfoHead;
RGBQUAD rgbQuad[256];
int i;
//设置BMP信息头,为了兼容以后的版本,加入这一项目使程序能够通过结构的大小来判断文件格式的版本
bitmapInfoHead.biSize = sizeof(BITMAPINFOHEADER);
bitmapInfoHead.biWidth = m_Width;//宽
bitmapInfoHead.biHeight = m_Height;// 高
bitmapInfoHead.biPlanes = 1;//一个页面,单层
bitmapInfoHead.biBitCount = 8;//8位彩色,共256色
bitmapInfoHead.biCompression = BI_RGB;//常量,等于0,不压缩
bitmapInfoHead.biSizeImage = m_Width*m_Height;//像素总大小
//这个值为在具有不同像素大小的显示设备上显示同样大小的图像(如果需要的话)提供必要的信息
bitmapInfoHead.biXPelsPerMeter = 9600;
bitmapInfoHead.biYPelsPerMeter = 9600;
bitmapInfoHead.biClrUsed = 0; //使用颜色数,可写0
bitmapInfoHead.biClrImportant = 0;//关键颜色数,同上
//对调色板赋值,得到红色渐变的调色板
for(i = 0;i<256;i++)
{
rgbQuad[i].rgbBlue = (BYTE)i;//蓝色亮度
rgbQuad[i].rgbGreen = (BYTE)i;//绿色亮度
rgbQuad[i].rgbRed = 255;//红色亮度
rgbQuad[i].rgbReserved = 0;//保留位
}
char chData[32][32];//位图信息
FillMemory(&chData,sizeof(chData),0);//清零
for(i = 0;i<32;i++)
{
for(int j = 0;j<32;j++)
{
chData[i][j] = i*8; //写入调色板中的颜色号
}
}
//对文件头进行赋值
bitmapFileHead.bfType = (WORD)0x4D42; //"BM"
bitmapFileHead.bfSize =(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256+m_Width*m_Height);
bitmapFileHead.bfReserved1 = 0;//保留
bitmapFileHead.bfReserved2 = 0;//保留
bitmapFileHead.bfOffBits =(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256);//把头文件等信息偏移计算出来
//打开输出文件
fstream fout;
fout.open("test.bmp",ios::out|ios::binary);
if(!fout.good())
{
// MessageBox(NULL,"文件打开失败","提示",MB_ICONINFORMATION);
//发现新浪博客可以无法处理/*方式的文字输入。
//错误 1 error C2664: “MessageBoxW”: 不能将参数 2 从“const char[13]”转换为“LPCWSTR
//本人不是很熟悉使用vs2012,暂时搁置该错误,但以后熟练了 再完善
return -1;
}
//写入
fout.write((char*)&bitmapFileHead,sizeof(BITMAPFILEHEADER));//写文件头
fout.write((char*)&bitmapInfoHead,sizeof(BITMAPINFOHEADER));//写信息头
fout.write((char*)&rgbQuad,sizeof(RGBQUAD)*256); //写调色板
fout.write((char*)&chData,m_Width*m_Height); //写数据
fout.close();
return 0;
}
算是开始图形的处理了,最起码看到bmp文件头和信息头等结构了,慢慢来
0 0
- 生成一幅windows位图:TestBmp,要…
- 如何生成一幅 TW8811 可显示的位图图像数据
- Windows 位图
- 位图一
- 在视图中显示一幅位图
- 位图的生成
- 根据文本生成位图
- Windows位图文件
- Windows位图和调色板
- Windows位图学习
- Windows位图特点
- Windows位图文件格式
- windows 位图结构详解
- Windows位图和调色板
- Windows 下 绘制位图
- windows API 加载位图
- windows位图与调色板
- windows 程序设计 位图
- 学习使用头文件卫士
- MFC+SQL server 数据库…
- SQL Server 安装 问题探讨
- 摘录:游戏开发的准则和“忠告”
- 游戏编程人员的基本素质要求
- 生成一幅windows位图:TestBmp,要…
- ch09_ex33 从大到小输出给定…
- CH06_EX33 数据结构Anyview练…
- Windows Sockets 1.1版本的Berkeley Sockets函数详解
- CH6_EX34 数据结构Anyview练习
- 练习使用STL中vector以及algorithm…
- 使用STL中的容器vector,求N以内的…
- windows.h错误分析以及类模板的使…
- 8大排序算法图文讲解