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

Вниз

Рамка   Найти похожие ветки 

 
Nightmare   (2007-06-17 12:32) [0]

Привет всем!!!
 Ниже приведён код, который рисует рамку на рабочем столе, но при прорисовке рамка оставляет за собой шлейф.

Var cur_pos: TPoint; r:TRect; Dc:HDC;
Begin
GetCursorPos(cur_pos);
r:=rect(frm.Left,frm.Top,cur_pos.X,cur_pos.Y);
DC: = GetDC(0);
DrawFocusRect(DC, r);
ReleaseDC(0, DC);
End;

Не могли бы вы подсказать как от него избавиться.


 
Cj ©   (2007-06-17 13:17) [1]


> GetDC(0);


если я тебя понял, то ты на столе рисуеш рамку для формы, (иначе как она может оставлять шлейф), неуверен но попробуй так:

DC: = GetDC(form1.handle);


 
Cj ©   (2007-06-17 13:18) [2]

А еще можешь перекрыть метод NCPaint или как-то там, у формы


 
Nightmare   (2007-06-17 13:27) [3]

Cj, твой код рисует рамку только на форме, это немного не то.
Мне же скорее всего, надо обновлять рабочий стол после прорисовки рамки.

А как например это делает винамр?


 
Cj ©   (2007-06-17 13:33) [4]

вот из FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988624857&n=16

а у винампа я рамки не видел


 
Nightmare   (2007-06-17 13:42) [5]

этот пример опять же рисует на форме.

Моя форма обрезана по битмапу,поэтому приходится рисовать прямо на рабочем столе.


 
homm ©   (2007-06-17 14:03) [6]

> Моя форма обрезана по битмапу,поэтому приходится рисовать
> прямо на рабочем столе.

Нельзя рисовать на рабочем столе. Ты можешь рисовать тлько в своих созданных окнах, все остальное кривость и косость.

А теперь объясни нормально, что тебе нужно (или нарисуй)


 
Cj ©   (2007-06-17 14:07) [7]


> А теперь объясни нормально, что тебе нужно

точно!

Если ты хочеш себе форму как у винампа то используй регионы (Regions)


 
Nightmare   (2007-06-17 14:26) [8]

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


 
Cj ©   (2007-06-17 14:34) [9]


> Мне надо форма чтобы растягивалась как у винампа, тоесть
> рамкой.

а, ну так то, дай подумаю...
попробуй создать еще одну, прозрачную форму с Shape и у Shape.Pen.Style:=[какойто-там с черточками] выберешь. ну вообщем попытайся так


 
Cj ©   (2007-06-17 14:37) [10]

...и при OnMouseUp чтобы эта форма убиралась, а первая становилась размером с эту


 
homm ©   (2007-06-17 14:49) [11]

Так попробуй.


var oldRect: TRect;
 flag: true;
procedure DrawRect();
Var cur_pos: TPoint; r:TRect; Dc:HDC;
Begin
GetCursorPos(cur_pos);
r:=rect(frm.Left,frm.Top,cur_pos.X,cur_pos.Y);
DC: = GetDC(0);
if flag then
DrawFocusRect(DC, OldRect);
DrawFocusRect(DC, r);
ReleaseDC(0, DC);
OldRect := r;
flag := TRUE;
End;

function onmousedown
begin
flag := FALSE;
end;


 
homm ©   (2007-06-17 14:50) [12]

ну и еше:

function onmouseip
begin
if flag
 DrawFocusRect(DC, OldRect);
end;


 
homm ©   (2007-06-17 14:51) [13]

> function onmouseip

onmouseup


 
Nightmare   (2007-06-17 14:52) [14]

Сj, это конечно вариант использовать вторую форму, я наверное так и буду делать, так даже кода меньше, и кстате проще расположить на 2 форме не Shape, а опять же обрезать форму по битмапу.


 
homm ©   (2007-06-17 15:00) [15]

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


 
Nightmare   (2007-06-17 15:01) [16]

homm, беру свои слова назад, все работает, спасибо.
P.S. довольно интересный способ, хотя скорее всего единственный.



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

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

Наверх




Память: 0.5 MB
Время: 0.014 c
2-1197289338
..::KraN::..
2007-12-10 15:22
2008.01.06
Работа с потоками


4-1182069154
Nightmare
2007-06-17 12:32
2008.01.06
Рамка


3-1188290958
ANB
2007-08-28 12:49
2008.01.06
Самый быстрый способ разобрать XML в оракл ?


9-1164923413
Gigatrop
2006-12-01 00:50
2008.01.06
Проблемы с координатами


2-1197279695
fics
2007-12-10 12:41
2008.01.06
Мерцание раб области