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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
osen'
 Аватар для osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
07.11.2010, 23:35     Компьютерная графика и анимация #1
Изобразить на экране монитора прямоугольник с изменяемыми длиной и шириной(+/-), расположением (стрелками).
Кто-нибудь может сказать, возможно ли написать программу в с++ или лучше это сделать в Matlab?
Подскажите, пожалуйста, с чего начать...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 23:35     Компьютерная графика и анимация
Посмотрите здесь:

Компьютерная графика 3D. C++
Компьютерная графика в c++ C++
C++ Компьютерная графика. Реализация фигуры додекаэдр
Графика в DOS. Анимация C++
C++ Компьютерная графика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
osen'
 Аватар для osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
07.12.2010, 23:06  [ТС]     Компьютерная графика и анимация #2
хотя бы как прямоугольник нарисовать в си, объясните пожалуйста...
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
07.12.2010, 23:21     Компьютерная графика и анимация #3
C
1
void rectangle( int left, int top, int right, int bottom );
Прямоугольник.
osen'
 Аватар для osen'
5 / 5 / 1
Регистрация: 09.10.2010
Сообщений: 49
08.12.2010, 21:03  [ТС]     Компьютерная графика и анимация #4
а можете немного объяснить, куда это вставлять. Совсем не понимаю, как работать в режиме form...
Netscape
 Аватар для Netscape
371 / 358 / 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;
}
osen'
 Аватар для 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 для оконного режима не подходит
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 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(); // отрисовка при каждом нажатии на кнопку
}
//---------------------------------------------------------------------------
Миниатюры
Компьютерная графика и анимация  
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
12.12.2010, 10:48     Компьютерная графика и анимация #8
а терь у ми ? как можно таким же образом нарисовать сферу?
osen'
 Аватар для 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);
}
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 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'ов, если вам сподручнее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2010, 22:16     Компьютерная графика и анимация
Еще ссылки по теме:

Компьютерная графика C++
C++ Посоветуйте литературу по теме "Компьютерная графика и аналитическая геометрия"

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

Или воспользуйтесь поиском по форуму:
osen'
 Аватар для 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);}
}
Yandex
Объявления
12.12.2010, 22:16     Компьютерная графика и анимация
Ответ Создать тему
Опции темы

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