Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326

Эллипс

02.05.2011, 12:49. Показов 3520. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кому нибудь приходилось писать генерацию эллипсов, чтобы в окне они рандомно возникали?
К примеру на форме компонент, и по нажатию кнопки он начал заполняться эллипсами, ну или может другими фигурами.

Если кто этим занимался прошу подсказать,нужно ли при написании использовать классы или оперировать с функцией потока?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2011, 12:49
Ответы с готовыми решениями:

Прозрачный эллипс
Подскажите как нарисовать прозрачный эллипс на TImage?

концентрический эллипс и много другое
Помогите в решение задачи в формах "В окно бледно-розового цвета выведите три концентрических эллипса, с размерами 500х300, 400х200 и...

Нужно построить график функции y = x2 на интервале [-3,3] и Построить график функции (эллипс) x^2/16 + y^2/9 = 1
Нужно построить график функции y = x2 на интервале и Построить график функции (эллипс) x^2/16 + y^2/9 = 1. На C++

6
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
02.05.2011, 13:46
Расположите на форме компоненты Timer1 (TTimer) и Button1 (TButton), установите у таймера свойство Enabled равным 0 (таймер не будет работать, пока мы его не запустим нажатием на кпопку)
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
#include "Math.hpp" //Для генерации случайных чисел
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x,y,w,h;  //Координаты наших эллипсов
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 //Определяем координаты
x=RandomRange(0,600); 
y=RandomRange(0,600);
w=RandomRange(0,120);
h=RandomRange(0,120);
//Рисуем эллипс
      Canvas->Ellipse(x-w/2,y-h/2,x+w/2,y+h/2);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Randomize();  //Для генерации случайных чисел
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=1;  //При нажатии на кнопку, включаем таймер
}
//---------------------------------------------------------------------------
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
02.05.2011, 14:34  [ТС]
Благодарю за предоставленный код.

Но еще вопрос. Если мне потребуется рисовать вместе с эллипсами квадраты, то они будут рисоваться в одно время или же это есть два процесса, где нужно каждому из них установливать приоритет?

Или другая ситуация.
В одной части формы возникают эллипсы а в другой квадраты.
Как быть с этими потоками?
вообщем создание потока с помощью библиотеки VCL
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
02.05.2011, 15:56
log,
Цитата Сообщение от log Посмотреть сообщение
Но еще вопрос. Если мне потребуется рисовать вместе с эллипсами квадраты, то они будут рисоваться в одно время или же это есть два процесса, где нужно каждому из них установливать приоритет?
Используйте для етого другой таимер тем же функциями и добавтье в Button1
C++
1
Timer2->Enabled=true;
Ну вот и польный код:
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
/---------------------------------------------------------------------------
 
#include <vcl.h>
#include <Math.hpp>
#pragma hdrstop
 
#include "Unit23.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm23 *Form23;
int x,y,w,h;
//---------------------------------------------------------------------------
__fastcall TForm23::TForm23(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
Timer2->Enabled=true;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Timer1Timer(TObject *Sender)
{
x=RandomRange(0,600);
y=RandomRange(0,600);
h=RandomRange(0,120);
w=RandomRange(0,120);
Canvas->Rectangle(x-w/2,y-h/2,x+w/2,x+h/2);
}
//---------------------------------------------------------------------------
void __fastcall TForm23::FormCreate(TObject *Sender)
{
Randomize();
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Timer2Timer(TObject *Sender)
{
  x=RandomRange(0,600);
y=RandomRange(0,600);
h=RandomRange(0,120);
w=RandomRange(0,120);
Canvas->Ellipse(x-w/2,y-h/2,x+w/2,x+h/2);
}
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
02.05.2011, 17:54  [ТС]
Я конечно понял что можно и дальше таким же образом
Меня интересует, можно ли на форме разделить область появления фигур?
Слева эллипсы,а справа квадраты.
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
02.05.2011, 19:48
Поставте на форму 2 Image 1 - В лево, 2 в право и вот код:
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <Math.hpp>
#pragma hdrstop
 
#include "Unit23.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm23 *Form23;
//---------------------------------------------------------------------------
__fastcall TForm23::TForm23(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
Timer2->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Timer1Timer(TObject *Sender)
{
Image1->Canvas->Ellipse(RandomRange(0,200),
                        RandomRange(0,200),
                        RandomRange(0,200),
                        RandomRange(0,200));
}
//---------------------------------------------------------------------------
void __fastcall TForm23::FormCreate(TObject *Sender)
{
Randomize();
}
//---------------------------------------------------------------------------
void __fastcall TForm23::Timer2Timer(TObject *Sender)
{
Image2->Canvas->Rectangle(RandomRange(0,200),
                          RandomRange(0,200),
                          RandomRange(0,200),
                          RandomRange(0,200));
}
//---------------------------------------------------------------------------
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
02.05.2011, 20:16  [ТС]
Спасибо всем кто ответил.
Решил попробовать все таки зайти вглубь реализовав потоки.
C++
1
2
3
4
void __fastcall TThreadForm::StartClick(TObject *)
{  TCriticalThread *FirstThread;      FirstThread = new TCriticalThread(false);
   TCriticalThread *SecondThread;   SecondThread = new TCriticalThread(false);
}
И в итоге один поток получился в виде
C++
1
2
3
4
5
6
7
8
9
FreeOnTerminate = true;
   for(int x = 0; x <= 20; x++)
   { if(Terminated) break;
      Sleep(50);
      ThreadForm->ListText.Insert("=====", 1);
      Text = ThreadForm->ListText;
      Synchronize(DisplayList); 
      ThreadForm->ListText.SetLength(ThreadForm->ListText.Length() - 5);
   }
И реализовал при помощи создания наследника класса TThread
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2011, 20:16
Помогаю со студенческими работами здесь

Эллипс
Ребята, только начал вникать в ООП, подскажите что делаю не так? Скопировал с сайта SFML код для отрисовки эллипса и видимо не понимаю как...

Эллипс
підкажіть де помилка не хоче правильний елліпс Program p12_8; Uses graph,crt; var d,m,a,b: integer; Begin D:=detect; ...

Эллипс
известна формула эллипса относительно начала координат она во ттак выглядит x=a*cos(t); y=b*sin(t); t:; как описывается дуга...

Эллипс
Подскажите, пожалуйста, как нарисовать на канве наклонённый эллипс. Если использовать команду Canvas.Ellipse, то я могу нарисовать только...

Эллипс в C#
Здравствуйте! Помогите разобраться с проблемкой... не получается реализовать проверку попадания точки (x, y) в эллипс в C#. С...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru