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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2013, 23:02   #1
MariaD
Пользователь
 
Аватар для MariaD
 
Регистрация: 10.01.2013
Сообщений: 56
Вопрос Delphi.Canvas

Построить окружность.Должна перемещаться по вертикали через центр формы, вверх-вниз при дохождении до границы.Перемещается вниз.Но когда доходит до края там и остается.


Код:
Delphi
unit yuiy;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Timer1: TTimer;
    procedure DrawCircle;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x,y, d: integer;
  dy: integer;
implementation

{$R *.dfm}
procedure TForm1.DrawCircle;
begin
Canvas.Pen.Color:=Form1.Color; {задать перу цвет формы}
Canvas.Ellipse(x,y,x+d,y+d); {стереть окружность – нарисовать ее цветом формы}
If y+d <Form1.ClientHeight then
y:=y+dy
else
y:=y-dy;
 {перейти в следующую позицию}
Canvas.Pen.Color:=clBlack; {задать перу черный цвет}
Canvas.Ellipse(x,y,x+d,y+d);
end;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
d:=StrToInt(Edit1.text);
x:=(Form1.ClientWidth div 2)-d div 2; {начальная позиция рисунка}
y:=0;
dy:=1; {шаг изменения координаты y}
Timer1.Enabled:=true;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Timer1.Interval:=10; {период возникновения события OnTimer – 0.5 сек}
Canvas.Brush.Color:=Form1.Color;
end;

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

Думаю это поможет:
Код:
procedure TForm1.DrawCircle;
begin

if y=0 then b:=true;
if (y+d)=Height then b:=false;

if b then y:=y+dy else y:=e-dy;

Canvas.Pen.Color:=Form1.Color; {задать перу цвет формы}
Canvas.Ellipse(x,y,x+d,y+d); {стереть окружность – нарисовать ее цветом формы}
Canvas.Pen.Color:=clBlack; {задать перу черный цвет}
Canvas.Ellipse(x,y,x+d,y+d);
end;
b:boolean глобальная
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.03.2013, 23:45   #3
MariaD
Пользователь
 
Аватар для MariaD
 
Регистрация: 10.01.2013
Сообщений: 56
По умолчанию

спасибо, помогло,но если использовать Height, то движется вниз пока половина окружности не скроется.при Form1.ClientHeight как надо работает
MariaD вне форума Ответить с цитированием
Старый 27.03.2013, 23:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ради бога )
Тебе виднее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, canvas _4Alex4_ Фриланс 2 16.05.2012 22:35
Canvas в Delphi Claster Помощь студентам 1 10.05.2011 16:29
Canvas и Delphi Macmeprag Помощь студентам 17 11.12.2010 16:56
delphi canvas Neymexa Помощь студентам 5 06.01.2010 21:35
Delphi Canvas карандаш wayder Помощь студентам 3 28.05.2009 16:57