![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Возник простой вопрос! Я пишу прогуи там должна быть кнопка бегающая по кругу. Как это сделать??? То есть:
есть таймер, мне нужен кусок кода оттуда, плиз это ж нетрудно... |
|
#2
|
|||
|
|||
|
|
|
#3
|
|||
|
|||
|
Спасибо конечно, но он мне пишет, что узел не найден. Не мог бы ты сюда выложить код? =)
|
|
#4
|
||||
|
||||
|
проще простого:
Код:
const centerx=200; //координаты центра
centery=200; //окружности
rad=50; //радиус
var angle:real; //угол
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Left:=centerx+Round(rad*cos(angle));
Button1.Top:=centery+Round(rad*sin(angle));
angle:=angle+pi/18; //изменение угла. чем меньше, тем точнее
//здесь угол 10*
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
angle:=0; //начальный угол
end;![]() следует учитывать, что координаты кнопки отсчитываются относительно ее левого верхнего угла |
|
#5
|
|||
|
|||
|
Спасибо огромное!!! Ща состряпал некую "приколку". Изначальный смысл проги был в украшении курсора летающим вокруг него пикселем. Но из за какой то ошибки он теперь обладает интересным свойством, он как будта чернила размазывает цвета по экрану... Вот код:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ScreenDC: hDC;
xc,yc,c,x,y : Integer;
a : real;
mp : TPoint;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(mp);
xc := mp.X;
yc := mp.Y;
ScreenDC := GetDC(0);
c := GetPixel(ScreenDc,xc+Round(25*cos(a)),yc+Round(25*sin(a)));
SetPixel(ScreenDc,x,y,c);
SetPixel(ScreenDc,xc+Round(25*cos(a)),yc+Round(25*sin(a)),clRed);
x := xc+Round(25*cos(a));
y := yc+Round(25*sin(a));
a := a + 0.1;
ReleaseDC(0,ScreenDC); {îñâîáîäèòü êîíòåêñò}
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
a := 0;
end;
end. |
|
#6
|
||||
|
||||
|
да тут и форма-то не нужна... создать динамически таймер и все
тока еще горячую клавишу надо для выхода назначитьи еще...угол лучше все-таки в радиах отмерять |