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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2014, 07:59   #1
kpat1k
 
Регистрация: 02.11.2014
Сообщений: 8
По умолчанию Вращение эллипса

Здравствуйте!Помогите с вращение эллипса вокруг оси!
Прорисовка эллипса есть,но не знаю как реализовать!
Вложения
Тип файла: rar Новая папка (2).rar (161.0 Кб, 7 просмотров)
kpat1k вне форума Ответить с цитированием
Старый 04.11.2014, 10:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то типа:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var   r1,r2:double;  b:boolean;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Repaint;
end;

procedure TForm1.FormPaint(Sender: TObject);
const speed=5;
var cx,cy:double;
begin
 cx:=Width/2; cy:=Width/2;
 with Canvas do begin
   Brush.Style:=bsClear;
   Pen.Color:=self.Color;
    Ellipse(round(cx-r1),round(cy-r2),round(cx+r1),round(cy+r2));

   if b then begin if r1>0 then r1:=r1-speed else b:=false; end
   else begin if r1<Width/3 then r1:=r1+speed else b:=true; end;

   Pen.Color:=clBlack;
    Ellipse(round(cx-r1),round(cy-r2),round(cx+r1),round(cy+r2));
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval:=100;
  Timer1.Enabled:=true;
  b:=true;
  r1:=Width/3;r2:=Height/3;
end;

end.
Да?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 11:08   #3
kpat1k
 
Регистрация: 02.11.2014
Сообщений: 8
По умолчанию

Как можно для моего сделать и это происходило по нажатию кнопки?
kpat1k вне форума Ответить с цитированием
Старый 04.11.2014, 11:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в твоем же есть кнопка запускающая таймер? Вот и сделай в моем примере такую же кнопку и наполни ее из своего кода.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 11:44   #5
kpat1k
 
Регистрация: 02.11.2014
Сообщений: 8
По умолчанию

Вот я нарисовал круг, и с тем же кругом работать как это реализовать?
kpat1k вне форума Ответить с цитированием
Старый 04.11.2014, 11:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты пример мой вообще смотрел?
Как там механизм рисования и вращения окружности устроен разобрался?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 11:50   #7
kpat1k
 
Регистрация: 02.11.2014
Сообщений: 8
По умолчанию

Да!Вот я для своего делаю, все в кашу превращается

вместо r1 и r2, брать значение r?
cx,cy - брать как x и у?

Вот что получается
Код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  r1,r2:double;  b:boolean;
  x, y, r: integer;
implementation

{$R *.dfm}
 procedure draw_Yin_and_yang(canv: tcanvas; x, y, r: integer);
begin
  canv.Pen.Width := 2;
  canv.Pen.Color := clblack;
  canv.Brush.Color := clwhite;
  canv.Ellipse(x - r, y - r, x + r, y + r);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
draw_Yin_and_yang(form1.Canvas, 200, 150, 50);
end;

procedure TForm1.Button2Click(Sender: TObject);
const speed=5;
var cx,cy:double;
begin
 Timer1.Enabled := not Timer1.Enabled;
cx:=Width/2; cy:=Width/2;
  with Canvas do begin
   Brush.Style:=bsClear;
   Pen.Color:=self.Color;
   Ellipse(round(x-r),round(y-r),round(x+r),round(y+r));
   if b then begin if r>0 then r:=r-speed else b:=false; end
   else begin if r<Width/3 then r:=r+speed else b:=true; end;
   Pen.Color:=clBlack;
    Ellipse(round(cx-r),round(cy-r),round(cx+r),round(cy+r));
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=100;
  Timer1.Enabled:=true;
  b:=true;
  //r1:=Width/3;r2:=Height/3;
end;

end.
вот сам файл
Вложения
Тип файла: rar Новая папка (8).rar (161.7 Кб, 13 просмотров)

Последний раз редактировалось Stilet; 04.11.2014 в 12:48.
kpat1k вне форума Ответить с цитированием
Старый 04.11.2014, 12:59   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет. Код отрисовки оставь как в моем примере в OnPaint.
А в кнопку помести управление таймером:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer1.Enabled := not Timer1.Enabled;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2014, 15:13   #9
kpat1k
 
Регистрация: 02.11.2014
Сообщений: 8
По умолчанию

что нужно изменить чтобы двигалась вверх?
kpat1k вне форума Ответить с цитированием
Старый 04.11.2014, 15:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Куда двигалось???
Всмысле вращалось по горизонтальной оси?
Там где r:=r-speed поставь r2
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эллипса по алгоритму Брезенхейма Lisёноk Помощь студентам 3 16.09.2013 22:24
Поворот эллипса. Kingdom_Reborn Помощь студентам 1 21.10.2010 15:54
Центр эллипса. Vergil Помощь студентам 2 21.05.2010 12:37
Раскраска эллипса rubik Мультимедиа в Delphi 1 02.05.2010 05:21
Рисование Эллипса Macwin Общие вопросы C/C++ 1 18.03.2010 14:38