Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Как сделать прозрачный прямоугольник?   Найти похожие ветки 

 
Tundra   (2002-12-12 13:02) [0]

Как сделать прозрачный прямоугольник?
Ну наподобие того, какой появляется когда изменяешь размеры какого-нибудь компонента на форме, или переносишь его в другое место. Ведь компоненты типа Label или Shape, не будут видны если на форме есть Edit и т.д.
Спасибо.


 
MegaVolt ©   (2002-12-12 14:37) [1]

Можно рисовать на канве пунктирный прямоугольник:

form1.canvas.DrawFocusRect(rect);


где кусе область вокруг которой рисуется прямоугольник. Задаётся двумя диагональными точками.

Чтобы перирисовать вызываешь эту функцию с теме же координатами и она стирает ранее нарисованный прямоугольник.


 
MegaVolt ©   (2002-12-12 14:40) [2]

не кусе а rect :)


 
Tundra   (2002-12-13 07:06) [3]

Спасибо,
но Дело не в том как его нарисовать, а в том чтобы он не перекрывался оконными (Twincontrol) компонентами. Потому что если на форме будут еще Edit - ы или другие.


 
Separator ©   (2002-12-13 07:10) [4]

А TBevel не подойдет?


 
Matolch ©   (2002-12-13 07:42) [5]

Рисуй на экране, все равно курсор за предел не уведешь

procedure DrawFRBounds(L,T,W,H: Integer);
var
h_DC: HDC;
begin
h_DC := GetDC(0);//для этого есь какая-то константа, но не помню
DrawFocusRect(h_DC, Bounds(L, T, W, H));//или LineTo, или еще чего там
end;


 
Tundra   (2002-12-13 09:10) [6]

>Separator
TBevel перекрывается компонентами которые могут получать фокус - не подходит.
>Matolch
Не понял как мне рисовать на экране - DrawFocusRect насколько я понял метод канвы, а канва всегда перекрывается компонентами которые могут получать фокус .




 
Matolch ©   (2002-12-13 09:29) [7]

Положи на форму кнопку. Положил? Дабл клик на ней.
Пишешь :Drawf
Жмешь "Ctrl" + #32.
Видишь?: DrawFocusRect(hDC: HDC; const lprc: TRect): LongBool;
hDC: HDC - это Device Context, то же самое, что и Canvas.Handle.
Используешь так:

var h_DC: HDC;
R: TRect;
begin
h_DC := GetDC(0); //получил контекст устройства
R := Bounds(200,200,1000,1000);
DrawFocusRect(h_DC, R);//смотришь и удивляешся, прям как я, когда в первый раз это сделал
end;
Кроме того, если тебе нужно отрисовать прямоугольник, а потом выяснить, что (какие области - читай Rect(Left, Top, Left+Width, Top + Height), хотя не только этим ограничивается) в него попало, что попало напиши FrameRgn, then press F1. Read carefully. Рекомендую зайти в раздел Group (есть там серенькая кнопка).
Мы писали, мы писали..


 
Tundra   (2002-12-13 09:36) [8]

спасибо попробую.


 
Matolch ©   (2002-12-13 10:05) [9]

Тока ещё. После использования Device Context, его надо освободить:

ReleaseDC(HWND, HDC);

В случае, если объект - экран, HWND := 0; HDC - ну, то что у тебя получилось.


 
Matolch ©   (2002-12-13 10:06) [10]

Прием?


 
Matolch ©   (2002-12-13 10:39) [11]

Е. Tundra, blin ты не на крайнем севере живешь? Может мы с тобой соседи?


 
Tundra   (2002-12-13 11:00) [12]

Просто для меня Делпфи пока, что тундра.


 
Matolch ©   (2002-12-13 11:18) [13]

Понял, типа для меня тоже. Делпхи - так правильнее. Удачи типа.



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-74699
MegaVolt
2002-12-06 18:29
2002.12.23
Работа со строками и PChar


1-74743
Kolya
2002-12-12 18:01
2002.12.23
HTML в Делфи


1-74654
u96
2002-12-12 22:23
2002.12.23
TOpenPictureDialog


6-74882
Rob
2002-10-28 10:23
2002.12.23
D7 и TClient&Server Socket


1-74630
bkv
2002-12-10 16:42
2002.12.23
сколько пикселов займет срока в 10 символов?