2012-01-23 12 views
18

Używam Delphi XE2 i lubię szklane efekty, a ja chcę "wycinać" szkło tak, jak w narzędziach tabletu Windows 7. Jeśli wiesz, jak przyciąć przycisk, będę szczęśliwy, jeśli powiesz mi, jak to zrobić.Delphi do cięcia szkła

enter image description here

Dzięki

+0

Tak, @Lama, to właśnie chcę zrobić. Czy wiesz jak? – Astervista

+0

@Astervista, nie, ale spróbuję to znaleźć, ponieważ jest to interesujące pytanie i jest już w moich ulubionych :) OT, ['here's'] (http://weblogs.asp.net/kennykerr/archive/2006/ 08/10/Windows-Vista-for-Developers-_1320_-Part-3-_1320_-The-Desktop-Window-Manager.aspx) ciekawa lektura dotycząca Desktop Window Managera i niektórych jego funkcji, ale nie sądzę, że istnieje odpowiedź na twoje pytanie tam (dlatego OT :) – TLama

+0

Dzięki, @TLama. – Astervista

Odpowiedz

5

rysunek w górnym obszarze jest po prostu kwestia zastosowania ramy szkła i malarstwa w obszarze non-klient, lub alternatywnie, używając API DwmExtendFrameIntoClientArea.

Najlepszym przykładem kodu, jaki widziałem, jest kontrolka "Wstążka" VCL, która zapewnia obszar "QAT" (pasek szybkiego dostępu), pomalowany w "obszarze innym niż klient".

Należy pamiętać, że autor musi myśleć nie tylko o tym, jak renderować systemy Vista/Win7 z włączonym szkłem, ale także musi decydować, jak renderować na WinXp, Win7 i Vista, gdy silnik Motywów jest wyłączony. Logika jest całkiem spora w jednostce Vcl.Ribbon.pas (lub po prostu Ribbon.pas, jeśli jesteś w XE lub wcześniejszej) dedykowanej temu jednostce.

Spójrz na procedure TCustomRibbonQuickAccessPopupToolbar.NCPaint(DC: HDC); w źródłach wstążek Vcl.

Rysowanie nieprostokątnego "obszaru rozszerzonego", który wystaje z dołu, jest prawdopodobnie kwestią zastosowania niestandardowego obszaru przycinania okien.

+0

Ale wtedy musiałbyś sam narysować świecącą krawędź, nieprawdaż? A jeśli tak, pytanie brzmi, w jaki sposób? – TLama

+1

Nie, jeśli podążacie za nowoczesnymi technikami. Wierzę, że odpowiedź dave'a łączy cię z tą częścią, zobacz komentarze na temat SetWindowRgn i przezroczystych wartości kolorów: http: // stackoverflow.com/questions/3572342/irregular-shaped-forms –

+0

Dowolny przykład wyjaśniłby więcej niż tysiąc słów. Przepraszam, jestem w tym kiepski i nie mam pojęcia, jak to zrobić. Masz zamiar użyć ['UpdateLayeredWindow'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633556%28v=vs.85%29.aspx)? Czy to naprawdę wystarczy? – TLama

0

Czy masz na myśli, że chcesz formy w kształcie? Jeśli tak

Irregularly shaped forms

może pomóc. Wyobrażam sobie, że będzie działać na Windows 7 (uwaga Remy w komentarzu).

hth

Powiązane problemy