Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
ind79ven
0 / 0 / 0
Регистрация: 31.10.2016
#1

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

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

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

Составить программу для вычисления параметров графического примитива «правильный многоугольник» - C++
Составить программу для вычисления параметров графического примитива «правильный многоугольник»: В параметрах указать координаты центра,...

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

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

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

Построение графического примитива в методе класса - Delphi
Простая функция построения примитива не работает в методе пользовательского класса, выдает ошибку. Как с этим бороться? unit Unit1; ...

Считать из файла параметры графического примитива и изобразить его - Turbo Pascal
Есть файл с вот такими вот данными rectangle:235,231,190,150;line:260,390,78,56; Как считать с файла это условие, чтобы выполнить его...

2
Skjame
86 / 45 / 8
Регистрация: 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 / 1
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Ищу простую и документированную библиотеку для рисования простых(2D, линейных) графиков - C++
Собственно весь вопрос в название темы. Ищу простую и документированную библиотеку для рисования простых(2D, линейных) графиков,...

Написать программу для рисования кривой n-ого порядка - Pascal ABC
help!!!

Экран-заставка: изобразить эмблему, выполненную с использованием любого графического примитива - Pascal ABC
Составить процедуру формирования экрана-заставки для предварительно разработанной диалоговой программы. Создать исполняемый файл для...


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

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

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