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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Подскажите плизз, как можно сделать, что-бы форма была прозрачная, а размещенный на ней имадж нет?
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

ты случайно не хочешь сделать форму изогнутой формы (круг, звезда, спираль и т.д.)?
если именно это ты хочешь, то смотри WinAPI регионы.
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Мне нужна форма, у которой будут сильно закруглены углы.
А где можно посмотреть эти регионы? У меня есть справочник по WinApi но он на английском и я почти ничего не мону понять.
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

Посмотри здесь:
http://club.shelek.com/print.php?id=181
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Вот еще интересная ссылка

http://www.codeproject.com/gdi/flowerpo ... print=true
2B OR NOT(2B) = FF
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Absurd, я почти ничего не понял в английском справочнике Api, а на этой интересной ссылке....
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Там можно скачать сорцы и рабочий пример
2B OR NOT(2B) = FF
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Но с этим примером ещё нужно разобраться. Кстати, можешь помочь?
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

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

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;
вот код. покидай на форму бутоны там эдиты и посмотри что будет
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Ответить