Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2007, 19:30   #1
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию прозрачность отдельных участков формы

как реализовать прозрачность отдельных частей(или участков) формы,например,как на прилагающемся рисунке?
в поиске ничего внятного не нашел,но ссылкам на темы с объяснением буду рад)
Изображения
Тип файла: jpg form.jpg (64.2 Кб, 607 просмотров)
Романнн вне форума Ответить с цитированием
Старый 28.12.2007, 19:52   #2
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Доброе время суток!!!
На рисунке сама форма полу прозрачьная! А компоненты нет!!!
Диржите пример а там разберётесь!!!
С уважением Volkogriz!!
Вложения
Тип файла: zip screen_ruler.zip (13.8 Кб, 434 просмотров)
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 28.12.2007 в 19:56.
Volkogriz вне форума Ответить с цитированием
Старый 28.12.2007, 20:03   #3
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию

спасибо,буду смотреть)
Романнн вне форума Ответить с цитированием
Старый 28.12.2007, 20:12   #4
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию

хм......от чего-то мне показалось,что прозрачное там все.....и форма,и все имеющиеся на ней компоненты.....
Романнн вне форума Ответить с цитированием
Старый 28.12.2007, 20:41   #5
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Цитата:
Прозрачность в форме означает то, что пользователь может видить то, что находится позати формы. Чтобы подготовить форму к прозрачности, Вам потребуется установить свойство AlphaBlend в True. Если AlphaBlend установлено в True, то свойство AlphaBlendValue указывает степень прозрачности. Это свойство позволяет задать значения от 0 до 255. 0 указывает на полную прозрачность окна, в то время как 255 указывает на непрозрачное окно. Так же возможно устанавливать свойства AlphaBlend и AlphaBlendValue во время разработки (или во время выполнения приложения) при помощи Object Inspector. Следующая форма диалогового окна About имеет значение AlphaBlendValue установленный в 210. Возможно, Вы подумаете, что такая возможность в Delphi, может Вам пригодиться довольно редко, однако прозрачностью можно довольно эффективно привлекать внимание пользователей Вашей программы: procedure TAboutBox.FormClose (Sender: TObject; var Action: TCloseAction); var i, cavb : 0..255; begin if AlphaBlend=False then begin AlphaBlendValue:=255; AlphaBlend:=True; end; cavb:=AlphaBlendValue; for i := cavb downto 0 do begin AlphaBlendValue := i; Application.ProcessMessages; end end; Вышеприведённый код, в событие OnClose для формы about, создаёт плавно изменяющийся эффект. Когда пользователь попытается закрыть диалоговое окошко, то форма плавно исчезнет. Делается это путём циклического уменьшения AlphaBlendValue до нуля. Другие два новый свойства формы в Delphi 6, это TransparentColor и TransparentColorValue. TransparentColor, это булевое свойство, которое указывает, будет определённый цвет, указанный в TransparentColorValue прозрачным. То есть мы можем задать прозрачность только определённому цвету. В качестве примера, установим TransparentColor для формы About в True. Теперь зададим свойству TransparentColorValue значение clWhite - что соответствует белому. Компонент Memo имеет белый фон. И взаключении хотелось бы указать на главный недостаток. Все свойства, описанные выше, не будут работать, если приложение запущено не под Windows 2000 или выше, и если процессор на компьютере ниже P90.если процессор на компьютере ниже P90.
Нарыл где не помню!!!
С уважением Volkogriz!!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 28.12.2007 в 20:45.
Volkogriz вне форума Ответить с цитированием
Старый 28.12.2007, 20:55   #6
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Радость

НО можно пойти на некоторую хитрость, а именно:

1. Для начала выбираем цвет формы, который, в последствии, будет прозрачным (Рекомендую выбирать clFuchsia или clLime)
2. В свойстве TransparentColorValue выбираем этот же цвет (clFuchsia)
3. Устанавливаем в TransparentColor значение true
4. Кидаем на форму компоненту TImage (Image1) из закладки Additional
5. Потом открываем старый добрый паинт (в стандартной конфигурации валяется здесь:
C:/WINDOWS/system32/mspaint.exe) Можно конешно и PhotoShop CS запустить, если сможешь там подобрать выбранный цвет (в паинте таких траблов нет - там сlFuchsia один из стандартных)
6. Создаем рисунок по размеру формы, выкрашиваем в нужный цвет (у мну он черный - если есть большое желание, можешь выбрать другой или вообще картинку вставить)
7. Далее выбираешь цвет clFuchsia и "вырезаешь" окна - в этих местах у формы будут дыры
8. Сохраняем в *.bmp
9. Далее в Билдере у компоненты Image1 в свойстве Picture и загружаем нашу картинку
10. Чтобы не париться с подгонкой размеров у Image1 в свойстве AutoSize ставим true и у самой формы тоже
11. Если это то, что было задумано - радуемся
С уважением Volkogriz!!!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 28.12.2007, 21:03   #7
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию

Волкогрыз, если Вы внимательно посмотрите на выложенный мной снимок, то заметите, что ЧАСТЬ формы почти полностью прозрачна, часть прозрачна примерно на половину, а центральная часть формы не прозрачна вообще...
AlphaBlend задает прозрачность всей форме, TransporentColor делает прозрачным 1 цвет...
Романнн вне форума Ответить с цитированием
Старый 29.12.2007, 00:37   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Романнн Посмотреть сообщение
Волкогрыз, если Вы внимательно посмотрите на выложенный мной снимок, то заметите, что ЧАСТЬ формы почти полностью прозрачна, часть прозрачна примерно на половину, а центральная часть формы не прозрачна вообще...
AlphaBlend задает прозрачность всей форме, TransporentColor делает прозрачным 1 цвет...
Вы немного ошибаетесь в оценке прозрачности.
На приведенном вами скриншоте есть только 2 типа - полупрозрачный и непрозрачный.
Непрозрачными являются панель белого цвета и кнопка закрытия формы.
Все остальное является полупрозрачным и видимая разница в степени прозрачности обусловлена лишь цветом того или иного участка.
Например, я могу предположить, что общий фон формы имеет цвет clSilver, тогда как прямоугольник под белой (непрозрачной) панелью - примерно RGB=60,60,60. Общий коэффициент прозрачности формы 150.
Я попробовал у себя - эффект очень схож.
Такого изображения, как мне кажется, можно достичь применением двух форм, жестко связанных между собой по положению на экране. Фоновая форма - с применением альфа-канала, а передняя - без оного.
Вопрос потери фокуса задней формой не встает, так как она его никогда не получает. А кнопка закрытия также принадлежит передней форме, но сама форма использует только два видимых региона - белую панель и кнопку закрытия формы.
Таким мне видится решение вашей проблемы на первый взгляд.
mihali4 вне форума Ответить с цитированием
Старый 29.12.2007, 11:02   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

На самом деле все реализуется с помощью картинки и маски и с установкой слоя ! Прочитайте про слои в Windows. На эту тему не мало обсуждений. Правда там свои проблемы и нюансы. Когда прочитаете разберетесь, поймете что я имел ввиду проблемы )

вот пример реализации моей проги на слоях ))) такие же еффекты прозрачности и тени формы

http://nemecsx.narod.ru/Images/Screen_Sx1NE.jpg

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

Последний раз редактировалось BOBAH13; 29.12.2007 в 11:06.
BOBAH13 вне форума Ответить с цитированием
Старый 29.12.2007, 11:23   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
На самом деле все реализуется с помощью картинки и маски и с установкой слоя ! Прочитайте про слои в Windows. На эту тему не мало обсуждений. Правда там свои проблемы и нюансы. Когда прочитаете разберетесь, поймете что я имел ввиду проблемы )
Ганиссылку в студию А то я тоже везде только с 2-мя формами решения видел, вроде топорно как-то
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прозрачность формы PNG, 2xTCV и др. Veiron Мультимедиа в Delphi 6 25.05.2008 01:19
Защита участков кода BlackOmen Общие вопросы Delphi 5 12.03.2008 08:59
Как задать прозрачность формы dimfil Общие вопросы Delphi 2 09.11.2007 09:53
как рисовать на канве битмапы учитывая прозрачность участков битмапа? Alar Общие вопросы Delphi 0 29.10.2006 23:06