Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.78
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
#1

Подключить графику (Borland С++ 3.01) - C++

10.06.2009, 15:10. Просмотров 4543. Ответов 9
Метки нет (Все метки)

Помогите, пожалуста, кото знает-> мне нужно подключить графику, в Borland С++ 3.01)))
Кто знает как ето сделать большая посьба помочь мне, так как нет никакой литературы под рукой, а в нети ничего не могу найти(((...
Я только помню, что нужно пользоватся библиотекой #include <graph.h>,
но и знаю, что когда-то, в главной функции писал какието рядки, для работы, точно какие не помню(((...
Большая просьба помочь)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
10.06.2009, 15:21     Подключить графику (Borland С++ 3.01) #2
В BC есть замечательный help (вызывается, если память мне не изменяет правой кнопкой мыши). Там можно посмотреть что и как. Так что спокойно смотрите информацию по функции initgraph. В моем Борланде в хелпе есть даже пример того, как все делается (он там, кстати, на каждую функцию имеется) Надеюсь, с английским у вас проблем нету?
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
10.06.2009, 15:48  [ТС]     Подключить графику (Borland С++ 3.01) #3
Щоб не создавати нової теми->
Кто может порекомендувать какую либо книгу, по графике на С++ : тоесть, где есть описаные приемы, стандартные функции, и т.д... где её можна знайти???
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
10.06.2009, 19:13     Подключить графику (Borland С++ 3.01) #4
Простите, а зачем вам книга? Я ведь сказал, в BC31 отличный help. Берете, открываете его и смотрите содержимое библиотеки graphics.h
там для каждой функции есть примеры. А названия функций там очень даже говорящие: circle, line, floodfill, fillpoly... Не подумайте, что я вредный, просто я пока не встретил ни одной книги, где бы хоть как-то описывалась работа с графическим режимом, т. е. я осваивал графику как раз по help'у. Возможно, кто-нибудь и знает книгу, где это дело было бы описано, но этот кто-то точно не я.
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
10.06.2009, 21:11  [ТС]     Подключить графику (Borland С++ 3.01) #5
Deiron, Вы, смотрю, знаете С++, так Вы не могли бы мне помоч еще и с таким вопросом : как работать в етом же С++ с клавиатурой и мышкой? Какие функции отвечают за ето? Какие директивы? Можно работать с встроеними функциями, или нужно подключать ассемблеровские вставки???
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
10.06.2009, 22:27     Подключить графику (Borland С++ 3.01) #6
ну... с клавой все просто. Есть такая замечательная функция getch();
делаете так:
C++
1
2
3
4
5
6
7
8
9
10
int key;
//...
key=getch();
if(!key){
   key=getch();
//здесь обработка дополнительных клавиш (например <- или ->)
}
else {
//здесь обработка обычных клавиш (например алфавитных клавиш)
}
А вот с мышой можно работать только через прерывания.
Вот моя старая прога, которая рисовала круг по 2 точкам. Точки брались по нажатию левой клавиши мышки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <dos.h>
#include <graphics.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
REGS reg1;
void InitMouse(int *nbuttons, int *OK);
void ShowMouse();
void HideMouse();
void ReadMouse(int *x,int *y,int *buttons);
void GetMouse(int *button,long *number,int *x,int *y);
void main()
{
 int b,ok;
 int gmode,gdriver=DETECT;
 int x1,y1,x2,y2;
 double x,y,r;
 long num,n1;
 initgraph(&gdriver,&gmode,"C:\\TC\\BGI");
 cleardevice();
 InitMouse(&b,&ok);
 ShowMouse();
 do
  ReadMouse(&x1,&y1,&b);
 while (!(b&1));//пока не нажата левая клавиша мыши
 num=0;
 do
 {
  GetMouse(&b,&n1,&x2,&y2);
  num=num+n1;
 }
 while (num<2); // пока число нажатий на ЛКМ меньше 2х
 x=((x1+x2)/2);
 y=((y1+y2)/2);
 r=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
 r/=2;
 HideMouse;
 cleardevice();
 setcolor(GREEN);
 circle((int)x,(int)y,(int)r);
 cout<<"press any key to end";
 getch();
 closegraph();
 clrscr();
}
//---------------------------------------------------------------------------
void InitMouse(int *nbuttons, int *OK)
{
 reg1.x.ax=0;
 int86(0x33,&reg1,&reg1);
 *OK=reg1.x.ax;
 *nbuttons=reg1.x.bx;
}
void ShowMouse()
{
 reg1.x.ax=1;
 int86(0x33,&reg1,&reg1);
}
void HideMouse()
{
 reg1.x.ax=2;
 int86(0x33,&reg1,&reg1);
}
void ReadMouse(int *x, int *y, int *buttons)
{
 reg1.x.ax=3;
 int86(0x33,&reg1,&reg1);
 *buttons=reg1.x.bx;
 *x=reg1.x.cx;
 *y=reg1.x.dx;
}
void GetMouse(int *button,long *number,int *x,int *y)
{
 reg1.x.ax=5;
 reg1.x.bx=*button;
 int86(0x33,&reg1,&reg1);
 *button=reg1.x.ax;
 *number=reg1.x.bx;
 *x=reg1.x.cx;
 *y=reg1.x.dx;
}
InitMouse - просто подключает мышу.
ShowMouse - отображает курсор.
HideMouse -убирает курсор (но временно. Если мышу после этого сдвинуть, курсор поялвляется снова. Возможно это недочет моей проги).
ReadMouse - считывает позицию курсора buttons отвечает за то, какая клавиша нажата.

На самом деле эту прогу я делал почти копипастом (все функции работы с мышой с3,14зженны), поэтому объяснить, что там и как мне было бы сложно. Попробуй их сам помучать, чтобы разобраться
Nazz
WEB-developer
896 / 727 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
10.06.2009, 22:49  [ТС]     Подключить графику (Borland С++ 3.01) #7
Цитата Сообщение от Deiron Посмотреть сообщение
ну... с клавой все просто. Есть такая замечательная функция getch();
делаете так:
C++
1
2
3
4
5
6
7
8
9
10
int key;
//...
key=getch();
if(!key){
   key=getch();
//здесь обработка дополнительных клавиш (например <- или ->)
}
else {
//здесь обработка обычных клавиш (например алфавитных клавиш)
}
а вот такой вопрос : просто я никогда не работал с клавой, и не имею ни малейшого представления как проводится обработка клавиш "->" или "a", Ви не могли бы мне показать пример для обработки каких либо клавиш, чтобы я знал что и как нужно правильно делать...? Буду Вам очень благодарен)))
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
10.06.2009, 23:21     Подключить графику (Borland С++ 3.01) #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <graphics.h>
#include <conio.h>                          
#include <stdio.h>                          
void main()                                 
{
    enum keys {UP = 72, DOWN = 80, LEFT=75, RIGHT=77, ESC=27};
    int gdriver=DETECT,gmode;
    int x,y,r=20;
    int key=0;
    initgraph(&gdriver,&gmode,"");
    cleardevice();
    x=getmaxx()/2;
    y=getmaxy()/2;
    setcolor(GREEN);
    circle(x,y,r);
    do
    {
        if (kbhit()){
            if (!(key=getch())) key=getch();
            switch (key)
            {
            case UP:
                {
                    setcolor(getbkcolor());
                    circle(x,y,r);
                    y=y-5;
                    setcolor(GREEN);
                    circle(x,y,r);
                    break;
                }
            case DOWN:
                {
                    setcolor(getbkcolor());
                    circle(x,y,r);
                    y=y+5;
                    setcolor(GREEN);
                    circle(x,y,r);
                    break;
                }
            case LEFT:
                {
                    setcolor(getbkcolor());
                    circle(x,y,r);
                    x=x-5;
                    setcolor(GREEN);
                    circle(x,y,r);
                    break;
                }
            case RIGHT:
                {
                    setcolor(getbkcolor());
                    circle(x,y,r);
                    x=x+5;
                    setcolor(GREEN);
                    circle(x,y,r);
                    break;
                }
            }
        }
    } while (key!=ESC);
    closegraph();
    clrscr();
}
Вот эта программа реализует движение зеленого круга. Управление - клавиши вверх/вниз/влево/вправо. Выход - Esc.
Внимание: третьим параметром в initgraph должен быть путь к EGAVGA.BGI
Для корректной работы с параметром "" поместите EGAVGA.BGI в папку BIN.
Функция kbhit говорит нам о том, нажат ли хоть какая-то клавиша. После нее идет обработка. Надеюсь с ней вы сами разберетесь.
Коды клавиш я взял из имеющейся у меня под рукой таблицы ASCII. Но можно написать маленькую прогу, которая по нажатии клавиши будет выдавать ее код
ericcson29
1 / 1 / 2
Регистрация: 29.04.2009
Сообщений: 22
11.06.2009, 19:39     Подключить графику (Borland С++ 3.01) #9
Я конечно не спец по С++
Но для работы элементарной графики нужно подключать директиву "initgraph" , иметь соответствующие дрова BGI, в частности EGAVGA.BGI и в настройках Options->Linker->Libraries поставить галочку в graphics library
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2009, 00:36     Подключить графику (Borland С++ 3.01)
Еще ссылки по теме:

C++ используя графику
По графику вычислить y = f(a) C++
Как подключить у Dev C++ графику C++
Аппроксимация к графику C++
C++ Как подключить графику к написанной программе?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
senderr
23 / 21 / 2
Регистрация: 03.04.2009
Сообщений: 257
16.10.2009, 00:36     Подключить графику (Borland С++ 3.01) #10
Друзья а што делать когда монитор жк на ноуте. И при запуске идет штота похожее на инициализацию режима и ничево.
Yandex
Объявления
16.10.2009, 00:36     Подключить графику (Borland С++ 3.01)
Ответ Создать тему
Опции темы

Текущее время: 02:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru