Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ind79ven
0 / 0 / 0
Регистрация: 31.10.2016
1

Как написать простую программу для рисования линии или другого графического примитива

20.08.2014, 22:35. Просмотров 838. Ответов 2
Метки нет (Все метки)

Как написать простую программу для рисования линии или другого графического примитива в geany на с++.
Большое спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2014, 22:35
Ответы с готовыми решениями:

Рисования в форме графического примитива
Помогите,Создать программу рисования в форме графического примитива с заливкой....

Составить программу для вычисления параметров графического примитива «правильный многоугольник»
Составить программу для вычисления параметров графического примитива...

Программа для графического примитива
Подскажите как написать программу в QBASIC для вот этого: в центре построить...

Перерисовка графического примитива
Доброго дня. Прошу помочь разобраться с перерисовкой графических фигур в...

Кривая Серпинского: как строить линии и что использовать для рисования
Дали мне курсовую "Кривые Серпинского" и условие, что будет написано на C#.А я...

2
Skjame
86 / 45 / 11
Регистрация: 20.12.2010
Сообщений: 216
Записей в блоге: 1
Завершенные тесты: 1
09.09.2014, 22:23 2
Лучший ответ Сообщение было отмечено как решение

Решение

кури OpenGL. Я на нём рисовал граффики функций в универе, и примитивы. да и вообще пригодится
самая простая ИМХО библиотека - GLUT
Bash
1
sudo apt-get install freeglut3 freeglut3-dev
старая прога не помню даже что она делает (*^_^*)
Кликните здесь для просмотра всего текста
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <GL/glut.h>
//#include <GL/freeglut_ext.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <vector>
#include <math.h>
 
using namespace std;
 
int Npixels=600;
int Timer;
 
int dx,dy;
 
 
struct figure{
    int x,y,a,b;
};
 
vector<figure> figures;
int Nfigures;
int CurFig=-1;
 
bool onFig=false;
 
 
void Reshape(int width, int height){
    glLoadIdentity();
    gluOrtho2D(0, Npixels,0, Npixels);
}
 
 
void Draw(void){
    glClear(GL_COLOR_BUFFER_BIT);   
 
    for(int i=0;i<Nfigures;i++){
        glRectf((figures[i].x-figures[i].a/2.),
                (figures[i].y-figures[i].b/2.),
                (figures[i].x+figures[i].a/2.),
                (figures[i].y+figures[i].b/2.));
    }
    glutSwapBuffers();
}
 
 
void timf(int value){
    glutPostRedisplay();
    glutTimerFunc(Timer, timf, 0);
}
 
void init(void){
    srand(time(NULL));
    figures.clear();
    Nfigures=rand()%10;
    for(int i=0;i<Nfigures;i++){
        figure newfig;
        newfig.x=rand()%Npixels;
        newfig.y=rand()%Npixels;
        newfig.a=rand()%(Npixels/10)+(Npixels/10);
        newfig.b=rand()%(Npixels/10)+(Npixels/10);
        figures.push_back(newfig);
    }
}
 
void motion(int mx, int my){
    bool can=true;
    int rastx,rasty;
 
 
    if(CurFig!=-1){
        for(int i=0;i<Nfigures;i++){
            if(i!=CurFig){
                rastx=fabs(figures[i].x-(mx-dx))
                        -(figures[i].a/2.+figures[CurFig].a/2.);
                rasty=fabs(figures[i].y-((Npixels-my)-dy))
                        -(figures[i].b/2.+figures[CurFig].b/2.);
                if(rastx<0&&rasty<0){
                    can=false;          
                    break;
                }
            }
        }
        if(can&&fabs(figures[CurFig].x-(mx-dx))<50&&fabs(figures[CurFig].y-((Npixels-my)-dy))<50){
            figures[CurFig].x=mx-dx;
            figures[CurFig].y=(Npixels-my)-dy;
        }else{
            if(rastx<=rasty)
                figures[CurFig].x=mx-dx;
            else
                figures[CurFig].y=(Npixels-my)-dy;
            clog<<rastx<<" "<<rasty<<endl;
        }
    }
 
}
 
void mouse(int key, int state, int mx, int my){
 
    if(state==0&&key==0){
        for(int i=0;i<Nfigures;i++){
            if(mx>=(figures[i].x-figures[i].a/2.)
                &&mx<=(figures[i].x+figures[i].a/2.)
                &&(Npixels-my)>=(figures[i].y-figures[i].b/2.)
                &&(Npixels-my)<=(figures[i].y+figures[i].b/2.)){
                    CurFig=i;
                    dx=mx-figures[i].x;
                    dy=(Npixels-my)-figures[i].y;
                    break;
            }
 
        }
 
 
 
    }else{
        CurFig=-1;
    }
 
}
 
int main(int Narg,char **arg){
 
    init();
 
    glutInit(&Narg, arg);
    glutInitWindowSize(Npixels, Npixels);
 
    (void)glutCreateWindow("glut game");
 
    glutReshapeFunc(Reshape);
    glutDisplayFunc(Draw);
    glutTimerFunc(0, timf, 0);
    glutMotionFunc(motion);
    glutMouseFunc(mouse);
 
 
    glutMainLoop();
 
return 0;
}
0
Cryptoff
9 / 10 / 2
Регистрация: 18.06.2013
Сообщений: 119
21.09.2014, 01:37 3
Geany - как notepad++.
В первом приближении Вам достаточно какой либо библиотеки: кажется, Cairo из библиотеки GTK. Во втором - x11, OpenGL etc
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2014, 01:37

Построение графического примитива в методе класса
Простая функция построения примитива не работает в методе пользовательского...

Считать из файла параметры графического примитива и изобразить его
Есть файл с вот такими вот данными ...

Написать программу для рисования геометрических фигур
Написать программу для рисования геометрических фигур


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru