Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Графика на С++


Автор: Ученик 10.6.2004, 22:48
Может кто-нибудь показать начинающему простую законченную
программу на С++, позволяющую вставить в нее созданную в
графическом редакторе цветную картинку?
Имею BC31 и Visual C++ 6.
Хотелось бы в DOS и Windows.
Литература не доступна.
В Интернете и на форуме впервые.
Подсказать, что и как, некому.

Автор: Ander 10.6.2004, 23:09
Посмотри вот здесь, там их целый вагон: http://www.codeproject.com/bitmap/

Автор: Ученик 12.6.2004, 10:33
Спасибо.
А есть что-нибудь на русском?

Автор: chipset 12.6.2004, 10:38
Для Windows - www.firststeps.ru или лучше покупай Круглинского
Программирование Microsoft Visual C++ 6.0...
А в Досе я бы помог но не знаю, поищи по форуму недавно тема была...

Автор: Ученик 12.6.2004, 18:51
Спасибо, кое-что отыскал.
Теперь бы научиться это использовать в своих целях...

Автор: Ученик 15.6.2004, 09:23
Отыскал для BC31, нарисовал, вставил.
Однако цвета вставленной картинки не совпадают с нарисованной в Paint.
C чем это связано? Может, с палитрой?
Можно ли что-нибудь сделать?
Вот код:
#include <conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <io.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <graphics.h>

unsigned long readnb(int handle,int from,int n)
{
int j=0;
unsigned char c;
unsigned long s=0;
lseek(handle,from,SEEK_SET);
do
{
read(handle,&c,1);
s=s+c*pow(2,j*8);
j++;
}while(j<n);
return(s);
}

int main(void)
{
int handle,i,bppixel,ctype,x=0,y=0;
FILE *stream;
unsigned char ch,r,g,b;
unsigned long fsize,width,height,asize,aloc;
int graphdriver=DETECT;
int graphmode;
initgraph(&graphdriver,&graphmode,"");

clrscr();
if ((handle=open("my.bmp",O_RDONLY | O_BINARY))==-1)
{
perror("Error");
}
stream=fdopen(handle,"r+");

fsize=readnb(handle,2,4);
printf("Size: %lu\n",fsize);

aloc=readnb(handle,10,4);
printf("Array location: %lu\n",aloc);

width=readnb(handle,18,4);
printf("Width: %lu\n",width);

height=readnb(handle,22,4);
printf("Height: %lu\n",height);

bppixel=readnb(handle,28,2);
printf("Bit per pixel: %u\n",bppixel);

ctype=readnb(handle,30,4);
printf("Compression type: %u\n",ctype);

asize=readnb(handle,34,4);
printf("Array size: %lu\n",asize);

getch();
lseek(handle,aloc,SEEK_SET);
cleardevice();
y=height;
do
{
read(handle,&r,1);
read(handle,&g,1);
read(handle,&b,1);

putpixel(x,y,((r+g+b)/51));
x++;
if (x==width)
{
x=0;
y--;
}
//getch();
}while(!eof(handle));
fclose(stream);
close(handle);
getch();
closegraph();
}

Автор: Конструктор 17.6.2004, 11:07
Имеется библиотечка собственного приготовления, но там формат файлов собственный и элементарный. Используется сам битмап отдельно и палитра для этого битмапа отдельно. Есть редактор и того и другого под DOS. Еще куча всяких приблуд под это дело.
Написано на BC++ 3.1 с использованием asm (вставленный прямо в сишный сорс)
Ежель кому надобно не жалко.smile.gif

Автор: Ученик 17.6.2004, 17:06
Конечно надобно!
Хорошо бы на работающих примерах, подобно данному выше коду.
Нет пока ни знаний, ни опыта в использовании отдельных фрагментов,
описанных в доступной мне литературе.

Автор: Конструктор 18.6.2004, 09:40
Вроде отправилось.

Автор: Ученик 18.6.2004, 17:13
Спасибо, получил.

Пример запустил - оригинально! Есть что изучать.
Картинки созданы с помощью MTX_EDIT?

Какой путь прописывать в SETUP? К "файлам редактора" - это к папке MTX_EDIT?

Автор: Конструктор 21.6.2004, 06:55
Да, в setup прописывается путь к файлам MTX_EDIT. т.е. например C:\Dir\dir\MTX_EDIT. Картинки были выдраны из дума, сконвертированы в MTX и в grayscale переведены.

Автор: shara 29.6.2004, 03:38
я тут проходил мимо и про библиотечку услышал, я тоже такю себе хочу, если можно wink.gif
залейте на мыло naSHary@yandex.ru

Автор: Конструктор 29.6.2004, 08:08
Вроде снова отправилось.
Добавлено @ 08:08
Вроде снова отправилось.

Автор: shara 29.6.2004, 12:36
ну спасибо, прикольная штука, однако

Автор: Гость_lamer 30.10.2004, 23:32
lyudi dobrie ?
pomogite etot ******** c++ dakanat

kak ya mogu vstavit kartinku v c++
v 16 zvetovom ?///
esli mojno posmatret na ishodniki itd?

Автор: Guest 3.12.2004, 20:50
люди подскажите пл3 где можно скачать библиотеку graphics.h, а то она у меня какая-то
глю4ная... 3аранее спаси6о

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)