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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
#1

Компьютерная графика и анимация - C++

07.11.2010, 23:35. Просмотров 2945. Ответов 10
Метки нет (Все метки)

Изобразить на экране монитора прямоугольник с изменяемыми длиной и шириной(+/-), расположением (стрелками).
Кто-нибудь может сказать, возможно ли написать программу в с++ или лучше это сделать в Matlab?
Подскажите, пожалуйста, с чего начать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Компьютерная графика и анимация (C++):

Компьютерная графика - C++
Люди, прошу помощи. Мне нужно создать компьютерную 3D графику. Причем для меня это выглядело так: пришел препод, сказал всего 1 фразу, -...

Компьютерная графика - C++
Есть две функцииvoid my_Line(int x1,int y1, int x2, int y2, int color)// Линия { int deltaX=abs(x2-x1); int deltaY=abs(y2-y1); ...

Компьютерная графика в c++ - C++
Помогите пожалуйста написать в с++ такой алгаритм, чтобы рисовать различные фигуры, к примеру прямоугольник.

Компьютерная графика 3D. - C++
Потребовалось мне сделать проект с 3D графикой. Т.е. надо было нарисовать плоскость Безье. Все вроде бы получилось, но во первых, хреново...

Компьютерная графика: нарисовать на экране куб - C++
нужно нарисовать куб на экране, а для этого преобразовать 3д координаты в 2д помогите, пожалуйста, не могу понять как это реализовать на...

Компьютерная графика. Реализация фигуры додекаэдр - C++
class MYAPPLICATION : public APPLICATION_3D { ... // Начальные координаты мыши int mX; int mY; // Изменение...

10
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
07.12.2010, 23:06  [ТС] #2
хотя бы как прямоугольник нарисовать в си, объясните пожалуйста...
0
Netscape
373 / 360 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
07.12.2010, 23:21 #3
C
1
void rectangle( int left, int top, int right, int bottom );
Прямоугольник.
1
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
08.12.2010, 21:03  [ТС] #4
а можете немного объяснить, куда это вставлять. Совсем не понимаю, как работать в режиме form...
0
Netscape
373 / 360 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
09.12.2010, 00:58 #5
Цитата Сообщение от osen' Посмотреть сообщение
хотя бы как прямоугольник нарисовать в си, объясните пожалуйста...
Пример на СИ:
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
// Взято на просторах интернета
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int left,top,right,bottom;
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
/* рисует прямоугольник */
rectangle(left,top,right,bottom);
/* очистка */
getch();
closegraph();
return 0;
}
0
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
12.12.2010, 00:46  [ТС] #6
<graphics.h>
эта библиотека, если я не ошибаюсь, подходит только для builder c++3

Добавлено через 1 час 27 минут
C++
1
2
3
4
5
void __fastcall TForm1::Image1Click(TObject *Sender)
{
 Canvas->Pen->Width=3;
 Canvas->Rectangle(50,50,500,400);
}
прямоугольник нарисовала, теперь осталась проблема с перемещением и изменением размеров.

Добавлено через 2 минуты
может быть, через switch()? только какие операторы использовать. хм..

Добавлено через 2 часа 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Image1Click(TObject *Sender)
{
int x=100,y=100,z=500,w=400,g;
   Canvas->Pen->Width=3;
   Canvas->Rectangle(x,y,w,z);
 switch(g)
 {
 case '8':Canvas->Rectangle(x,y,w,z+=5);break;
 case '2':Canvas->Rectangle(x,y,w,z-=5);break;
 case '4':Canvas->Rectangle(x,y,w-=5,z);break;
 case '6':Canvas->Rectangle(x,y,w+=5,z);break;
 default:break;
 }
}
Добавлено через 1 минуту
только как вводить переменные, ведь библиотека iostream.h для оконного режима не подходит
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
12.12.2010, 08:51 #7
osen', используйте визуальные компоненты для изменения размеров, например поля ввода Edit:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::drawRect() // пользовательская ф-ция отрисовки
{
    Image1->Canvas->Pen->Width = 3;
 
    Image1->Canvas->FillRect(Image1->Canvas->ClipRect);
    int x = StrToInt(Edit1->Text);
    int y = StrToInt(Edit2->Text);
    int w = StrToInt(Edit3->Text);
    int h = StrToInt(Edit4->Text);
 
    Image1->Canvas->Rectangle(x, y, x + w, y + h);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    drawRect(); // отрисовка при каждом нажатии на кнопку
}
//---------------------------------------------------------------------------
1
Миниатюры
Компьютерная графика и анимация  
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
12.12.2010, 10:48 #8
а терь у ми ? как можно таким же образом нарисовать сферу?
0
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
12.12.2010, 15:39  [ТС] #9
и все равно не понимаю, как сделать так, что бы размеры прямоугольника изменялись при нажатии клавиш...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Image1Click(TObject *Sender)
{
int x=10,y=10,z=500,w=400;
char Key;
Canvas->Pen->Width=3;
Canvas->Rectangle(x,y,w,z);
switch(Key)
{
case VK_UP:Canvas->Rectangle(x,y,w+5,z);
case VK_DOWN:Canvas->Rectangle(x,y,w-5,z);
case VK_RIGHT:Canvas->Rectangle(x,y,w,z+5);
case VK_LEFT:Canvas->Rectangle(x,y,w,z-5);
}
}
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
12.12.2010, 15:51 #10
osen', существует событие OnKeyDown, типа:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::DrawGrid1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        if(Key==VK_UP)   {//действие//}
    if(Key==VK_DOWN)  {//...}
    if(Key==VK_LEFT)  {//...}
    if(Key==VK_RIGHT) {//...}
}
Ну или swith вместо if'ов, если вам сподручнее.
1
osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
12.12.2010, 22:16  [ТС] #11
у меня выходит, что рисуется не один прямоугольник с изменяющимися параметрами, а несколько, причем размеры меняются только на +-5

Добавлено через 32 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
int x=50,y=50,z=100,w=150;
Canvas->Pen->Width=3;
 Canvas->Rectangle(x,y,w,z);
if (Key == VK_UP) {z=z-5;Canvas->Rectangle(x,y,w,z); }
if (Key == VK_DOWN) {z=z+5;Canvas->Rectangle(x,y,w,z);}
if (Key == VK_RIGHT) {w=w+5;Canvas->Rectangle(x,y,w,z);}
if (Key == VK_LEFT) {w=w-5;Canvas->Rectangle(x,y,w,z);}
}
0
12.12.2010, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2010, 22:16
Привет! Вот еще темы с ответами:

Посоветуйте литературу по теме "Компьютерная графика и аналитическая геометрия" - C++
Доброе время суток.Возникла след. проблема.У нас появился такой предмет как комп. грфика,вроде все хорошо,но проблема в том,что препод на...

Графика в DOS. Анимация - C++
Здравствуйте, прошу помочь, вот задание: Написать программу градуированы сосудов для отмеривания воды. Имеются не отградуированные сосуды...

Очистить рисунок (графика, анимация в консоле с++) - C++
Здравствуйте, можно как-то очистить нарисованный треугольник? И подскажите, как можно залить нарисованную фигуру например красным цветом....

Компьютерная графика на VS C++ MFC. Срочно требуется помощь! - C++
Привет всем. Я с 3 курса факультета информационных технологий НГУ. Хочу попросить помощи в решении задач по курсу комп. графики....


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

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

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