Страница 1 из 3

Прозрачность

Добавлено: 07 апр 2007, 15:11
Yura_ua
Подскажите плизз, как можно сделать, что-бы форма была прозрачная, а размещенный на ней имадж нет?

Re: Прозрачность

Добавлено: 07 апр 2007, 18:09
SergeyS
ты случайно не хочешь сделать форму изогнутой формы (круг, звезда, спираль и т.д.)?
если именно это ты хочешь, то смотри WinAPI регионы.

Re: Прозрачность

Добавлено: 09 апр 2007, 00:12
Yura_ua
Мне нужна форма, у которой будут сильно закруглены углы.
А где можно посмотреть эти регионы? У меня есть справочник по WinApi но он на английском и я почти ничего не мону понять.

Re: Прозрачность

Добавлено: 09 апр 2007, 07:56
SergeyS
Посмотри здесь:
http://club.shelek.com/print.php?id=181

Re: Прозрачность

Добавлено: 09 апр 2007, 08:43
Absurd
Вот еще интересная ссылка

http://www.codeproject.com/gdi/flowerpo ... print=true

Re: Прозрачность

Добавлено: 09 апр 2007, 16:23
Yura_ua
Absurd, я почти ничего не понял в английском справочнике Api, а на этой интересной ссылке....

Re: Прозрачность

Добавлено: 09 апр 2007, 16:29
Absurd
Там можно скачать сорцы и рабочий пример

Re: Прозрачность

Добавлено: 09 апр 2007, 21:54
Yura_ua
Но с этим примером ещё нужно разобраться. Кстати, можешь помочь?

Re: Прозрачность

Добавлено: 09 апр 2007, 23:18
Alar

Re: Прозрачность

Добавлено: 10 апр 2007, 13:08
Blood_Magic

Код: Выделить всё

procedure TForm1.RebuildWindowRgn;
var
  FullRgn, Rgn: THandle;
  ClientX, ClientY, I: Integer;
begin
  // определяем относительные координаты клиенской части
  ClientX:= (Width - ClientWidth) div 2;
  ClientY:= Height - ClientHeight - ClientX;
  // создаем регион для всей формы
  FullRgn:= CreateRectRgn(0, 0, Width, Height);
  // создаем регион для клиентской части формы
  // и вычитаем его из FullRgn
  Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +ClientHeight);
  CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
  // теперь добавляем к FullRgn регионы каждого контрольного элемента
  for I:= 0 to ControlCount -1 do
    with Controls[I] do begin
      Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +
                                          Width, ClientY + Top + Height);
      CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
    end;
  // устанавливаем новый регион окна
  SetWindowRgn(Handle, FullRgn, True);
end;
вот код. покидай на форму бутоны там эдиты и посмотри что будет