![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Нужно чтоб на мониторе отображалась линия и ее можно было бы перемещать и вращать вокруг оси. Ну допустим линия и посередине кружок либо квадратик чтоб можно было перемешать. Если потянуть за концы то линия бы вращалась вокруг этого квадратика/ Вопросов много как это все организовать. Как вывести изображение прямой без формы
|
#2
|
|||
|
|||
![]() Если просто "нарисовать" на "рабочем столе", то можно получить его hDC :
DeskTopDC := GetWindowDC(GetDeskTopWindow); и "рисовать". Но если нужен полный контроль над "рисунком", то, вероятно, лучше "рисовать" на прозрачной (или полупрозрачной) форме. |
#3
|
|||
|
|||
![]() Здесь http://doc-prg.narod.ru/tmp/wLine.zip лежит небольшой иллюстрирующий пример (пару дней там будет) : линия на форме (линию можно перемещать по экрану).
Последний раз редактировалось roamer, 09.10.2009 в 00:29. |
#4
|
|||
|
|||
![]() Немного переформулирую задачу. Нужна полоса а на концах были кнопки. При удержаннии за одну из кнопок можно было бы ее перемещать при этом вторая должна находиться на месте. Ну типа рулетки чтоли. Так же и со второй. Вот такой код состряпал пока. Почему двигается только одна кнопка вроде и для второй прописал. Перетаскиваеться с помощью зажатия ctrl и мыши
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } MouseDownSpot : TPoint; Capturing : bool; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then begin SetCapture(Button1.Handle); Capturing := true; MouseDownSpot.X := x; MouseDownSpot.Y := Y; end; end; procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Capturing then begin Button1.Left := Button1.Left - (MouseDownSpot.x - x); Button1.Top := Button1.Top - (MouseDownSpot.y - y); end; end; procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Capturing then begin ReleaseCapture; Capturing := false; Button1.Left := Button1.Left - (MouseDownSpot.x - x); Button1.Top := Button1.Top - (MouseDownSpot.y - y); end; end; procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then begin SetCapture(Button1.Handle); Capturing := true; MouseDownSpot.X := x; MouseDownSpot.Y := Y; end; end; procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Capturing then begin Button2.Left := Button2.Left - (MouseDownSpot.x - x); Button2.Top := Button2.Top - (MouseDownSpot.y - y); end; end; procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Capturing then begin ReleaseCapture; Capturing := false; Button2.Left := Button2.Left - (MouseDownSpot.x - x); Button2.Top := Button2.Top - (MouseDownSpot.y - y); end; end; end. Последний раз редактировалось Admin, 10.10.2009 в 12:19. |