![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() да тут и форма-то не нужна... создать динамически таймер и все
![]() и еще...угол лучше все-таки в радиах отмерять РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#7
|
|||
|
|||
![]() Ну то что без формы можно эо я понимаю... А вот почему прога все размывает???
Я ни в чем никогда не уверен... И в этом тоже... ![]() |
#8
|
||||
|
||||
![]() вот так не размывает...но все равно остаются следы, когда окна перетаскиваешь и т.п.
Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin GetCursorPos(mp); xc := mp.X; yc := mp.Y; ScreenDC := GetDC(0); SetPixel(ScreenDc,x,y,c); c := GetPixel(ScreenDc,xc+Round(25*cos(a)),yc+Round(25*sin(a))); 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 + pi/36; ReleaseDC(0,ScreenDC); end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#9
|
|||
|
|||
![]() Проблемка появилась... (http://www.delphisources.ru/forum/sh...28559post28559) Если можешь выложи код так...
Под фразой... Цитата:
Я ни в чем никогда не уверен... И в этом тоже... ![]() |
#10
|
||||
|
||||
![]() чтобы мерцания не было видно, надо сдвиг подбирать. вот код:
Код:
... var cur : TPoint; r1 : integer; //можно и дробным сделать a1, r2, n:real; procedure TForm1.Timer1Timer(Sender: TObject); begin GetCursorPos(cur); r2:=r1*(cos(n*a1)); //функция в полярных координатах Form1.Width:=5; Form1.Height:=5; Form1.Left:=cur.X+Round(r2*cos(a1))+5; Form1.Top:=cur.Y+Round(r2*sin(a1))-5; //чтобы мышке не мешалось a1:=a1+pi/180; end; procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(application.Handle, GWL_EXSTYLE) Or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW); Form1.Height:=5; Form1.Width:=5; Form1.Top:=-5; Form1.Left:=-5; a1:=0; r1:=100; n:=3; end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |