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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 17:17   #1
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Делфи,эллипс

Здравствуйте!
Необходимо реализовать программу, в которой какая либо фигура совершает разные движения(вверх вниз, с одного угла в другой, по синусоиде, по спирали, по окружности).
В общем я реализовала все, но у меня не выходит движение вверх вниз и с одного угла в другой.
Помогите пожалуйста, кто чем может.

вот текст программы, в которой окружность двигается по синусоиде.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure Mng(n,x0,y0,r:integer);//процедура рисования
  end;
 
var
  Form1: TForm1;
  x,y,n,r:integer;//координаты центра фигуры, радиус
implementation
 
{$R *.dfm}
procedure TForm1.Mng(n,x0,y0,r:integer);

// x0,y0 - координаты центра фигуры
// r - радиус фигуры
var p:array of TPoint;
    a,da:real;
    i:integer;
begin
 Setlength(p,n+1);
 a :=pi/4; // начальный угол
 da:=2*pi/n;
 for i:=0 to n-1 do
  begin
    p[i].x:=x0+Round(r*cos(a));
    p[i].y:=y0-Round(r*sin(a));
    a := a+da;
  end;
    p[n].X := p[0].X;
    p[n].Y := p[0].Y;
    with Canvas do
     begin
      Pen.Color:=clRed;
       Ellipse(x-r,y-r,x+r,y+r)
     end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=false;
n:=4;
r:=40;
x:=r;
y:=clientheight div 2;
Form1.Color:=ClWhite;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

var dx,dy:integer;
begin
dx:=(clientwidth+r) div 10;
dy:=(clientheight+r) div 10;
Canvas.Brush.Color := ClWhite;
Canvas.FillRect(Canvas.ClipRect);
x:=x+dx;
y:=y-round(sin(x*pi/180)*r);
n:=n+1;
if n<=20 then Mng(n,x,y,r)
else
 begin
  Timer1.Enabled:=false;
  with Canvas do
   begin
    Ellipse(x-r,y-r,x+r,y+r)
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled:=true;
Timer1.Interval:=1000;
with Canvas do
 begin
  Pen.Color:=clRed;
    Ellipse(x-r,y-r,x+r,y+r);
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin

 Timer1.Enabled := false;


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer1.Enabled:=true;
Timer1.Interval:=1000;
with Canvas do
 begin
  Pen.Color:=clRed;
    Ellipse(x-r,y-r,x+r,y+r);
 end;
end;

end.
Ильгизуля вне форума Ответить с цитированием
Старый 21.05.2013, 22:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вверх вниз и с одного угла в другой.
Код:
unit Unit1;

interface

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

type

  { TForm1 }

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
const radius=50;
var  i:integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (tag+radius)>=Height then i:=-1;
  if (tag-radius)<=0 then i:=1;
  tag:=tag+i*10;
   Repaint;

end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Ellipse(tag-radius,tag-radius,tag+radius,tag+radius);
end;

end.
Изучай и осваивай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наклонный эллипс SomeBod Компоненты Delphi 2 12.02.2016 02:04
Эллипс в паскаль kolian2000 Паскаль, Turbo Pascal, PascalABC.NET 4 12.03.2015 23:16
Нарисовать эллипс iKarma Microsoft Office Excel 3 29.04.2013 11:06
Как повернуть эллипс? gylayko Помощь студентам 0 18.12.2011 18:39
Эллипс по параметрам rzrwolf Microsoft Office Excel 6 21.12.2008 01:47