-4

C++ の新しいプログラマーの皆さん、OpenCV を使用せずにビットマップ 24 ビット カラー イメージで Visual C++ で青色の四角形を描画するプログラムを作成するのを手伝ってくれませんか。また、VS C++ では、使用している shud の代わりにヘッダー graphics.h を取得できません。線ではなく、画像に四角形を描画する必要があります。これは、下部に黒い線のみを表示する VS-C++ のコードです。

void copy_Header(FILE *,FILE *);

void main()
{

    FILE *src; int offset; int width, height;
    fopen_s(&src,"jaguar.bmp","rb");
    FILE *dest;
    fopen_s(&dest,"rect_image.bmp","wb");

    fseek(src,10,SEEK_SET);
    fread(&offset,4,1,src);

    fseek(src,18,SEEK_SET);
    fread(&width,4,1,src);

    fseek(src,22,SEEK_SET);
    fread(&height,4,1,src);

    copy_Header(src,dest);

    fseek(src,offset,SEEK_SET);
    fseek(dest,offset,SEEK_SET);
    unsigned char x=(unsigned char)fgetc(src);
    double r,g,b,z[3];
    int i;
    unsigned char ch[3];
    b=ch[0]=fgetc(src);
    g=ch[1]=fgetc(src);
    r=ch[2]=fgetc(src);
    for (int j=0;j<4;j++)
    {
        for(; offset<width; offset++)
        {
            z[0]=b;
            z[1]=0;
            z[2]=0;
            fputc(z[0],dest);
            fputc(z[1],dest);
            fputc(z[2],dest);
        }
    }

    fseek(src,4096,SEEK_SET);
    fseek(dest,4096,SEEK_SET);
    unsigned char y= (unsigned char)fgetc(src);
    while(!feof(src))
    {
        fputc(y,dest);
        y=(unsigned char)fgetc(src);
    }
    fclose(src);
    fclose(dest);
    puts("Image Copied");
    _getch();

}

void copy_Header(FILE *srcImage,FILE *dstImage)
{
    unsigned char *ptrc= (unsigned char *)malloc(54*sizeof(char));

    fseek(srcImage,0,SEEK_SET);
    fseek(dstImage,0,SEEK_SET);

    fread(ptrc,54,1,srcImage);
    fwrite(ptrc,54,1,dstImage);
}

事前にサンクス。画像サイズは 1024 x 1024 で、24 ビットのビットマップ ファイルです。

4

1 に答える 1