Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Вращение   Найти похожие ветки 

 
student2   (2004-11-27 15:48) [0]

Как создать компонент - наследник TGraphicControl, чтобы на нем происходило вращение фигуры (например линии)????? Затруднение составляет именно в перерисовке фигуры (линии). Т.е. линия рисуется в процедуре OnPaint, но после прорисовки начального состояния нужно изменить её координаты, и снова запустить данную процедуру - никак не соображу как это зделать...


 
antonn ©   (2004-11-27 17:21) [1]

линию можно завращать используя полярные координаты. Те обычные перевести. Нечто есть в компоненте TKnob (KNOB.PAS)


 
Student2   (2004-11-27 17:34) [2]

А где можно найти этот компонентик????


 
antonn ©   (2004-11-28 17:29) [3]

идет в комплекте с TBassplayer. А вообще есть http://www.torry.net/ и yandex.ru


 
_student   (2004-11-28 20:32) [4]

unit RotLine;
interface

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

type
 TMyLine = class(TImage)
   t: ttimer;

   constructor Create(AOwner: TComponent); override;

 private
   procedure MyTimer(Sender: TObject);
   { Private declarations }
 public
   { Public declarations }
 end;

procedure Register;

implementation

var i: integer;

procedure Register;
begin
 RegisterComponents("MyLine", [TMyLine]);
end;

constructor TMyLine.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 t := TTimer.Create(self);
 t.OnTimer := MyTimer;
 t.Interval := 1;
 t.Enabled := true;
 Width := 200;
 height := 200;
 i := 0;
end;

procedure tmyline.MyTimer(Sender: TObject);

var x, y: integer;
begin
 inc(i);
 if i >= 360 then i := 0;
 x := round(100 * sin(i * pi / 180)) + 100;
 y := round(100 * cos(i * pi / 180)) + 100;
 Canvas.Brush.Color := clBtnFace;
 canvas.fillrect(rect(0, 0, width, height));
 Canvas.Brush.Color := clblack;
 Canvas.MoveTo(100, 100);
 Canvas.LineTo(x, y);
 x := round(100 * sin((i + 180) * pi / 180)) + 100;
 y := round(100 * cos((i + 180) * pi / 180)) + 100;
 Canvas.MoveTo(100, 100);
 Canvas.LineTo(x, y);
end;
end.



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
14-1126513550
vidiv
2005-09-12 12:25
2005.10.02
icann.org


5-1101371685
Ascan
2004-11-25 11:34
2005.10.02
Ошибка при Halt в событии OnCreate


2-1124946459
_alex_niv_
2005-08-25 09:07
2005.10.02
Помогите с SQL-запрсом


14-1126402462
Думкин
2005-09-11 05:34
2005.10.02
Игорь Шевченко, С Днем Рождения!


1-1126629913
Дмитрий_05
2005-09-13 20:45
2005.10.02
Popup меню раскрыть и скрыть