N
Neostead
Товарищи, помогите плз! Как воздух нужна функция вида f("C:\\m.bmp", x, y); где x,y - координаты левого верхнего угла картинки на экране. Сам пытался - не получилось (видимо, недостаточно
пряморукий). Программлю под Borland C++ 3.1. Функция нужна ПОЗАРЕЗ, помогите плз! Выводить на экран нужно либо монохромные картинки, либо 16 цветов, либо 256 - не важно, на картинке будет схема чёрным по белому.
Проблема ещё в том, что не знею как определить правильный размер заголовка (или обоих), палитры и самой картинки. Вот всё, чего я добился. Программа выводит на экран пиксельную абракадабру...
В данном коде картинка 100*100, 16 цветов...
пряморукий). Программлю под Borland C++ 3.1. Функция нужна ПОЗАРЕЗ, помогите плз! Выводить на экран нужно либо монохромные картинки, либо 16 цветов, либо 256 - не важно, на картинке будет схема чёрным по белому.
Проблема ещё в том, что не знею как определить правильный размер заголовка (или обоих), палитры и самой картинки. Вот всё, чего я добился. Программа выводит на экран пиксельную абракадабру...
Код:
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <share.h>
void InitGraph();
int BMPP(char *name, int x, int y);
void InitGraph()
{ //InitGraph start
int gdriver=DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "D:\\Borlandc\\Bgi\\"); //Initialising graphics
errorcode = graphresult(); //If there is an error
if (errorcode !=grOk)
{ //Type of error start
printf("Graphics error: %s\n.", grapherrormsg(errorcode));
printf("Press any key to exit...");
getch();
exit(1);
} //Type of error end
setviewport (0,0,640,480,0);
} //InitGraph end
int BMPP(char *name, int x, int y)
{
char dataHeader[40];
char *data=new char[5000];
FILE *fp=fopen(name, "rb");
if(!fp){return -1;}
fread(dataHeader,1, 40, fp);
fread(data, 5000, 1, fp);
fclose(fp);
for(int b=0; b<100; b++)
{
for (int a=0; a<100;a++)
{
char c=data[b*100/2+a/2];
if(a&1){c>>=4;}
else {c&=15;}
putpixel(a+x, b+y, c);
}
}
return 0;
}
void main()
{
InitGraph();
BMPP("C:\\m.bmp", 10, 10);
getch();
closegraph();
}