C语言在24真彩位图上指定位置处画一条横线

#include<stdio.h>
#include<windows.h>
typedef struct
{
    BYTE b;
    BYTE g;
    BYTE r;
}RGB;
int main(void)
{
    BITMAPFILEHEADER fileHeader;
    BITMAPINFOHEADER infoHeader;
    FILE*pfin=fopen("F:\\timg.bmp","rb");
    FILE*pfout=fopen("F:\\tidus2.bmp","wb");
    //ReadtheBitmapfileheader;
    fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin);
    //ReadtheBitmapinfoheader;
    fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin);
    //为简化代码,只处理24位彩色
    if(infoHeader.biBitCount==24)
    {
        int size=infoHeader.biWidth*infoHeader.biHeight;
        RGB img[570][400];  //这两个值就是上边的infoHeader.biWidth和infoHeader.biHeight
        fread(img,sizeof(RGB),size,pfin);
        //把第50行染成黑色
        int i=0;
        for(;i<infoHeader.biWidth;i++)
        {
            img[50][i].b=img[50][i].g=img[50][i].r=0;
        }
        //将修改后的图片保存到文件
        fwrite(&fileHeader,sizeof(fileHeader),1,pfout);
        fwrite(&infoHeader,sizeof(infoHeader),1,pfout);
        fwrite(img,sizeof(RGB),size,pfout);
    }
    fclose(pfin);
    fclose(pfout);
}

效果:

posted @ 2018-09-21 17:40  一梦、  阅读(663)  评论(0编辑  收藏  举报