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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2012, 19:05   #1
kolian2000
 
Регистрация: 30.11.2012
Сообщений: 8
Восклицание Эллипс в паскаль

Как нарисовать кликом миши елипсы?Один клик-один елипс,два клика-два елипса и тд.
kolian2000 вне форума Ответить с цитированием
Старый 20.12.2012, 19:55   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Обработку мыши в паскале пиши. Потом проверяй - если кликнута, тогда эллипс.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 21.12.2012, 19:59   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В Паскаль АВС.
Код:
uses graphABC,Events;
procedure MouseDown(x,y,mb: integer);
begin
  if mb=1 then ellipse(x-20,y-10,x+20,y+10)
end;
begin
OnMouseDown:=MouseDown;
end.
puporev вне форума Ответить с цитированием
Старый 12.03.2015, 23:06   #4
programmer3
 
Аватар для programmer3
 
Регистрация: 10.03.2015
Сообщений: 4
По умолчанию

процедура рисования эллипса

Код:
procedure Ellipse1(x1,y1,x2,y2:integer);
var n,m,d,b:real;i,z,xx,yy:integer;
begin

if abs(x2-x1)>abs(y2-y1) then
begin



d:=abs(x2-x1);
m:=2*sqrt(d*d/4-(y2-y1)*(y2-y1)/4);
if x1<x2 then z:=x1
         else z:=x2;
xx:=z;
yy:=round((y1+y2)/2);

for i:=z+1 to round((x1+x2)/2+1) do begin
n:=(abs(x2-x1)-m)/2-i+z;
b:=sqrt(sqr((d*d-n*n+sqr(m+n))/(2*d))-sqr(m+n));
line(xx,yy,i,round((y1+y2)/2-b));
line(xx,y1+y2-yy,i,round((y1+y2)/2+b));
line(x2+x1-xx,y1+y2-yy,x2+x1-i,round((y1+y2)/2+b));
line(x2+x1-xx,yy,x2+x1-i,round((y1+y2)/2-b));
xx:=i;
yy:=round((y1+y2)/2-b);
                                   end;

end

else begin

d:=abs(y2-y1);
m:=2*sqrt(d*d/4-(x2-x1)*(x2-x1)/4);
if y1<y2 then z:=y1
         else z:=y2;
yy:=z;
xx:=round((x1+x2)/2);

for i:=z+1 to round((y1+y2)/2+1) do begin

n:=(abs(y2-y1)-m)/2-i+z;
b:=sqrt(sqr((d*d-n*n+sqr(m+n))/(2*d))-sqr(m+n));
line(xx,yy,round((x1+x2)/2+b),i);
line(x1+x2-xx,yy,round((x1+x2)/2-b),i);
line(x2+x1-xx,y1+y2-yy,round((x1+x2)/2-b),y2+y1-i);
line(xx,y1+y2-yy,round((x1+x2)/2+b),y2+y1-i);
yy:=i;
xx:=round((x1+x2)/2+b);
                                   end;
end;
    end;
___
Код надо форматировать!
Модератор

Последний раз редактировалось Serge_Bliznykov; 13.03.2015 в 10:06.
programmer3 вне форума Ответить с цитированием
Старый 12.03.2015, 23:16   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
процедура рисования эллипса
А зачем? ellipse и в турбо есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наклонный эллипс SomeBod Компоненты Delphi 2 12.02.2016 02:04
Как повернуть эллипс? gylayko Помощь студентам 0 18.12.2011 18:39
Гипербола, эллипс за формулой xJohnx Общие вопросы Delphi 0 24.05.2011 19:48
Си++ Эллипс по заданным точкам serg777321 Помощь студентам 1 25.05.2009 11:58
Эллипс по параметрам rzrwolf Microsoft Office Excel 6 21.12.2008 01:47