Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 09:24   #1
Vergil
Пользователь
 
Аватар для Vergil
 
Регистрация: 09.11.2009
Сообщений: 19
По умолчанию Центр эллипса.

В моей программе на C++ рисуются эллипсы
Код:
Image1->Canvas->Ellipse(ptr[i]->GetX(),ptr[i]->GetY(), ptr[i+1]->GetX(),ptr[i+1]->GetY());}
Мне нужно, чтобы в центре эллипса рисовался круг. Но я не знаю, как найти центр. Вот в этом проблема.

Если нужен, то вот код программы.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class Points
{protected:
int x,y;
public:
Points(int x1=0,int y1=0) 
{x=x1; y=y1;}
Points(Points &pt);
int GetX(){return x;} 
int GetY(){return y;} };
Points::Points(Points &pt)
{x=pt.x;
y=pt.y;}
class Circle: public Points
{protected:
TColor color;
public:
Circle(int x1=0,int y1=0,TColor col=clBlack);
Circle(Circle &el)
{ x=el.x;
y=el.y;
color=el.color;}
TColor GetColor(){return color;}};
Circle::Circle(int x1,int y1,TColor col)
{ x=x1; y=y1;
  color=col;}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{int i;
int x2,y2;
if(cb1->Checked)
{Image1->Canvas->Pen->Color=clWhite;
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height); }
int n;
n=StrToInt(Edit1->Text);
Circle **ptr;
ptr=new Circle *[n];
for(i=0;i<n;i++)
{x2=random(Image1->Width);
y2=random(Image1->Height);
ptr[i]=new Circle(x2,y2,(TColor)(random(100)*50000));}
for(i=0;i<n-1;i=i+2)
{Image1->Canvas->Brush->Style=bsClear;
Image1->Canvas->Pen->Color=ptr[i]->GetColor();
Image1->Canvas->Ellipse(ptr[i]->GetX(),ptr[i]->GetY(), ptr[i+1]->GetX(),ptr[i+1]->GetY());}
  for(i=0;i<n;i++)
  {delete ptr[i];} 
delete [] ptr;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{Close();}
//---------------------------------------------------------------------------

Последний раз редактировалось Vergil; 21.05.2010 в 10:56.
Vergil вне форума Ответить с цитированием
Старый 21.05.2010, 10:07   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Ты сама на свой вопрос ответила.

Код:
var 
 R : Integer; //Радиус круга
Image1->Canvas->Ellipse(
(ptr[i+1]->GetX() + ptr[i]->GetX()) div 2 - R,
(ptr[i+1]->GetY() + ptr[i]->GetY()) div 2 - R,
(ptr[i+1]->GetX() + ptr[i]->GetX()) div 2 + R,
(ptr[i+1]->GetY() + ptr[i]->GetY()) div 2 + R
);
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 21.05.2010, 12:37   #3
Vergil
Пользователь
 
Аватар для Vergil
 
Регистрация: 09.11.2009
Сообщений: 19
По умолчанию

Спасибо. Попытаюсь сделать.
Vergil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскраска эллипса rubik Мультимедиа в Delphi 1 02.05.2010 05:21
цветовая раскраска эллипса rubik Помощь студентам 1 01.05.2010 15:52
Пересечение эллипса с прямой (Delphi) 0rtega Помощь студентам 0 13.04.2010 21:45
Рисование Эллипса Macwin Общие вопросы C/C++ 1 18.03.2010 14:38
Центр Евминова Hawaiian Свободное общение 2 06.10.2008 22:43