Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.07.2007, 11:25
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
Вопрос Тень

Всем здрасте! Кто-нить знает как можно
сделать тень вокруг формы как на Viste?

Заранее Спасибо.
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #2  
Старый 20.07.2007, 14:11
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Может быть, реализовать способ кнопки (Button): левая и верхняя грани белые, нижняя и правая чёрные?
Ответить с цитированием
  #3  
Старый 20.07.2007, 15:00
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Та не, мне нужна тень с переходящей полупрозрачностью,
типа такого:
http://dimasoft.jino-net.ru:8080/web...OAD&FILE=2.jpg
__________________
Кому я должен - всем прощаю!!!!

Последний раз редактировалось <<D>>, 20.07.2007 в 15:27.
Ответить с цитированием
  #4  
Старый 20.07.2007, 15:22
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Это не совсем по теме, но, может поможет в плане идеи, как можно сделать тень...
Я, честно говоря, сам когда-то искал, как можно сделать полупрозрачную тень, но так и не нашел

Код:
procedure TForm2.DrawShadows(WDepth, HDepth : Integer); 
var 

Dst, RgnBox  : TRect; 
hOldDC         : HDC; 
OffScreen      : TBitmap; 
Pattern          : TBitmap; 
Bits               : array[0..7] of WORD; 
begin 

Bits[0]:=$0055; 
Bits[1]:=$00aa; 
Bits[2]:=$0055; 
Bits[3]:=$00aa; 
Bits[4]:=$0055; 
Bits[5]:=$00aa; 
Bits[6]:=$0055; 
Bits[7]:=$00aa; 
hOldDC:=Canvas.Handle; 
Canvas.Handle:=GetWindowDC(Form1.Handle); 
OffsetRgn(ShadeRgn, WDepth, HDepth); 
GetRgnBox(ShadeRgn, RgnBox); 
Pattern:=TBitmap.Create; 
Pattern.ReleaseHandle; 
Pattern.Handle:=CreateBitmap(8, 8, 1, 1, @(Bits[0])); 
Canvas.Brush.Bitmap:=Pattern; 
OffScreen:=TBitmap.Create; 
OffScreen.Width:=RgnBox.Right-RgnBox.Left; 
OffScreen.Height:=RgnBox.Bottom-RgnBox.Top; 
Dst:=Rect(0, 0, OffScreen.Width, OffScreen.Height); 
OffsetRgn(ShadeRgn, 0, -RgnBox.Top); 
FillRgn(OffScreen.Canvas.Handle, ShadeRgn, Canvas.Brush.Handle); 
OffsetRgn(ShadeRgn, 0, RgnBox.Top); 
//  BitBlt работает быстрее CopyRect 
BitBlt(OffScreen.Canvas.Handle, 0, 0, OffScreen.Width, OffScreen.Height, 
        Canvas.Handle, RgnBox.Left, RgnBox.Top, SRCAND); 
Canvas.Brush.Color:=clBlack; 
FillRgn(Canvas.Handle, ShadeRgn, Canvas.Brush.Handle); 
BitBlt(Canvas.Handle, RgnBox.Left, RgnBox.Top, OffScreen.Width, 
  OffScreen.Height, OffScreen.Canvas.Handle, 0, 0, SRCPAINT); 
OffScreen.Free; 
Pattern.Free; 
OffsetRgn(ShadeRgn, -WDepth, -HDepth); 
ReleaseDC(Form1.Handle, Canvas.Handle); 
Canvas.Handle:=hOldDC; 
end; 

Комментарии :
Функция рисует тень сложной формы на форме Form2.
Для определения формы тени используется регион ShadeRgn, который был создан где-то раньше (например в OnCreate). Относительно регионов см. Win32 API.

Титов Игорь Евгеньевич
infos@obninsk.ru
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #5  
Старый 20.07.2007, 15:44
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Шота у меня не шо не полушилось.
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #6  
Старый 22.07.2007, 05:25
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Вот тут все есть:
http://www.codeproject.com/gdi/pxalphablend.asp
На всяк случай еще здесь:
http://www.delphikingdom.ru/asp/answ...IDAnswer=52020
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #7  
Старый 30.07.2007, 11:19
zNk zNk вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 39
Репутация: 10
По умолчанию

2 <<D>>:
Без обид, но этой хнёй я тебе не советую заниматься, лучше переходи на Vista'у, чем пытаться сделать для неё скин...
Ответить с цитированием
  #8  
Старый 01.08.2007, 10:47
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

от перехода на висту на других компах с другой вендой у этой проги вистовский скин не появится так что делать такой скин может и есть смысл, если человеку хочется.
Ответить с цитированием
  #9  
Старый 01.08.2007, 13:39
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Есть такая прога, кажется YZ'Shadow, так вот она делает под всеми окнами на XP такую тень как на Висте. У меня она сейчас работает,
и неплохо, только не делает тень под теми окнами на которых
FormStyle=fsNone.
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #10  
Старый 01.08.2007, 17:54
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Качнул я ее, эту прогу, там есть YzShadow.dll, из нее экуспортируются разные ф-ии, например menuTransparent, crateShadowAll, startHook, я попробовал поковыряться в отладчике, понял, что все эти тени делаются при помощи PostMessage к окнам, там идет перечисление всех окон в системе и отправка им каких-то сообщений, конкртнее, к сожалению, я не смог разобраться - уж большо глючно все отлаживается, в общем, если очень надо, советую эту dll поковырять. Кстати, ты можешь эту DLL и сам заюзать, только в ней не реализована возможность добавлять тень к одному окну, только ко всем, но это тоже не будет проблемой, если ты эту dll расковыряешь
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter