![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |