Вопросы такие:
1) как сделать, чтобы при перемещении ToolBar или панели рисовался прозрачный контур, следующий за курсором мыши?
2) Как сделать рисование рамки поверх всех визуальных компонентов на форме, если я выполняю действие типа "выделить объекты" (двигаю мышку с нажатой левой кнопкой)?
Рисование рамок или контуры окна при перемещении
Модератор: Модераторы
Хорошо, задам вопрос по другому: как средствами Лазаруса рисовать на рабочем столе?
ИЛИ: как сделать полностью прозрачное окно?
Предполагается что я ориентируюсь на кросплатформенность.
Добавлено спустя 1 час 45 минут 30 секунд:
Или такой вариант: как рисовать на канве формы, чтобы при этом рисованное было СВЕРХУ расположенных на форме компонент??? В дизайнере Лазаруса это же как то сделано....
ИЛИ: как сделать полностью прозрачное окно?
Предполагается что я ориентируюсь на кросплатформенность.
Добавлено спустя 1 час 45 минут 30 секунд:
Или такой вариант: как рисовать на канве формы, чтобы при этом рисованное было СВЕРХУ расположенных на форме компонент??? В дизайнере Лазаруса это же как то сделано....
salog писал(а):как сделать полностью прозрачное окно?
Быть может все таки полу-прозрачное окно? Потому как с полностью прозрачным объектом работать довольно проблематично.
Добавлено спустя 23 минуты 24 секунды:
Andreich писал(а):как рисовать на канве формы, чтобы при этом рисованное было СВЕРХУ расположенных на форме компонент??? В дизайнере Лазаруса это же как то сделано....
Если имеется в виду выделительная рамка (т.н. "резиновый контур"), то вот ссылка: http://delphiworld.narod.ru/base/hotspot_comp.html.
Но это просто изменение размера панели с рисованием пунктира по контуру.
Панель то остается непрозрачной. .. если я правильно понял.
Я вроде нашел решение через процедуру Canvas.CopyRect.
Правда в последнем снапшоте который я скачал - как то криво компилируются присваивания типа:
r:=Rect(0,0,100,100);
А в еще более последнем снапшоте проекты вообще перестали компилироваться - не может найти какой то модуль в самом начале.
Панель то остается непрозрачной. .. если я правильно понял.
Я вроде нашел решение через процедуру Canvas.CopyRect.
Правда в последнем снапшоте который я скачал - как то криво компилируются присваивания типа:
r:=Rect(0,0,100,100);
А в еще более последнем снапшоте проекты вообще перестали компилироваться - не может найти какой то модуль в самом начале.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
могу ошибаться но
после взятия быстро регистрируется курсор с нужным изображением и готово.
хотя просто контур можно и проще
http://www.podgoretsky.com/ftp/Docs/Del ... /ch_12.htm
Перемещение элементов
для кросплатформенного решения поискать эти сообщения в исходниках лазаря. там же будет и для линукса.
тут вроде просто рисовать надо ручками. например как тут
Добавлено спустя 3 минуты 55 секунд:
поискав резиновый контур наткнулся на такое
http://delphiworld.narod.ru/base/select ... angle.html
salog писал(а):1) как сделать, чтобы при перемещении ToolBar или панели рисовался прозрачный контур, следующий за курсором мыши?
после взятия быстро регистрируется курсор с нужным изображением и готово.
хотя просто контур можно и проще
http://www.podgoretsky.com/ftp/Docs/Del ... /ch_12.htm
Перемещение элементов
для кросплатформенного решения поискать эти сообщения в исходниках лазаря. там же будет и для линукса.
salog писал(а):2) Как сделать рисование рамки поверх всех визуальных компонентов на форме, если я выполняю действие типа "выделить объекты" (двигаю мышку с нажатой левой кнопкой)?
тут вроде просто рисовать надо ручками. например как тут
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, JvGIF, StdCtrls, Buttons, jpeg;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Shape1: TShape;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
foo:Tpoint;
state:boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape1.Visible:=true;
Shape1.Top:=x;
Shape1.Left:=y;
Shape1.Height:=0;
Shape1.Width:=0;
foo.x:=x;
foo.y:=y;
state:=true;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape1.Top:=foo.x-x;
Shape1.Left:=foo.y-y;
state:=false;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if state then
begin
Shape1.Width:=x-foo.x;
Shape1.Height:=y-foo.y;
end;
end;
procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(inttostr(x));
end;
end.
Добавлено спустя 3 минуты 55 секунд:
поискав резиновый контур наткнулся на такое
http://delphiworld.narod.ru/base/select ... angle.html
