Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/20: Рейтинг темы: голосов - 20, средняя оценка - 4.80
5 / 5 / 0
Регистрация: 09.10.2010
Сообщений: 49
1

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

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

Author24 — интернет-сервис помощи студентам
Изобразить на экране монитора прямоугольник с изменяемыми длиной и шириной(+/-), расположением (стрелками).
Кто-нибудь может сказать, возможно ли написать программу в с++ или лучше это сделать в Matlab?
Подскажите, пожалуйста, с чего начать...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2010, 23:35
Ответы с готовыми решениями:

Компьютерная графика и анимация
Частица (от заданной начальной точки) осуществляет хаотическое движение, двигаясь в случайном...

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

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

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

10
5 / 5 / 0
Регистрация: 09.10.2010
Сообщений: 49
07.12.2010, 23:06  [ТС] 2
хотя бы как прямоугольник нарисовать в си, объясните пожалуйста...
0
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
07.12.2010, 23:21 3
C
1
void rectangle( int left, int top, int right, int bottom );
Прямоугольник.
1
5 / 5 / 0
Регистрация: 09.10.2010
Сообщений: 49
08.12.2010, 21:03  [ТС] 4
а можете немного объяснить, куда это вставлять. Совсем не понимаю, как работать в режиме form...
0
374 / 361 / 52
Регистрация: 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
5 / 5 / 0
Регистрация: 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
Бродяга
314 / 268 / 56
Регистрация: 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
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
12.12.2010, 10:48 8
а терь у ми ? как можно таким же образом нарисовать сферу?
0
5 / 5 / 0
Регистрация: 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
Бродяга
314 / 268 / 56
Регистрация: 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
5 / 5 / 0
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2010, 22:16
Помогаю со студенческими работами здесь

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

Компьютерная графика
Добрый вечер. У меня задача: преобразования между интерполяционной линией и линией Безье. Имеется...

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru