IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Создание формы произвольного вида...
b13st
сообщение 13.11.2006 17:41
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Вобщем, я делаю форму произвольного вида, вот таким способом (в данном случае круглую):
 R1 := CreateElliPticRgn(0,0,100,100);
SetWindowRgn(Handle, R1, True);


и я хочу сделать вокруг нее оборку (как бы подчеркнуть границу формы), вот так -
	 Canvas.Brush.Color := clBlack; 
FrameRgn (Canvas.Handle, R1, Canvas.Brush.Handle, 2, 2);


Но в результате ни чего не изменилось - получается та же форма без оборки..
Собственно сам вопрос - как сделать вокруг формы рамку (оборку)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 13.11.2006 21:12
Сообщение #2


Гость






И не будет...

Читаем здесь: MSDN:: SetWindowRgn
Цитата
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.


Попробуй это:
procedure TForm1.FormCreate(Sender: TObject);
var
region: HRGN;
begin
BorderStyle := bsNone;
region := CreateEllipticRgn(0, 0, 100, 100);
SetWindowRgn(Handle, region, True);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
T: HRGN;
begin
Canvas.Brush.Color := clBlack;

T := CreateEllipticRgn(0, 0, 100, 100);
try
FrameRgn(Canvas.Handle, TempRgn, Canvas.Brush.Handle, 2, 2);
finally
DeleteObject(TempRgn);
end;

end;
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 17.07.2025 9:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"