位图文件的另类应用:文件画图

研究了BMP文件格式后,突发奇想,在位图文件中直接画图(虽然看不见图象,只要有显示位图的手段,就能看到画图的结果)

文件头是可以随意定义的(只要符合位图文件要求)。程序可以直接改写象素数据来达到画图目的!

下面的C代码大意给出画点/线的方法,画点的场景是一张1024*768的位图文件(在文件中画点),主要的意思是:先生成一个1024*768的位图文件,设置其背景颜色为黑色(RGB(0,0,0)),然后给出画点的方法:给1024*768的象素点中的一个改变颜色为红色(RGB(255,0,0))
#define outputfileb "pixel.bmp"
#include "string.h"
#include "stdio.h"
#include "math.h"
...
file * outfileb;
char outnameb[1024];
strcpy(outnameb,outputfileb);

remove(outfileb);
outfileb=fopen(outnameb,"ab+");

int i,j,k;
i=j=k=0;
unsigned char head[54];
for(i=0;i <54;i++)head[i]=0x00;
head[0]='B';head[0]='M';head[2]=0x36;head[4]=0x24;head[10]=0x36;head[14]=0x28;head[19]=0x04;head[23]=0x03;head[26]=0x01;head[28]=0x18;head[36]=0x24;
for(i=0;i <54;i++){fprintf(outfileb,"%c",head[i);}

unsigned char r,g,b;
r=ox00;g=ox00;b=ox00;//background color is black

for(j=1;j <=768;j++)
for(i=1;i <=1024;i++)
{
if((i==100)&&(j==200)){r=oxff;g=ox00;b=ox00;}//指定在(100,200)处画点,颜色为红色
if(abs(j-2*i) <=3){r=ox00;g=oxff;b=ox00;}//画绿色线
fprintf(outfileb,"%c%c%c",b,g,r);}
}

fcloseall();

这样画出来的东西是直接画在画布(位图文件)上的吆,改变画布大小,就相当于改变分辨率! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值