Delphi для резки стекла - PullRequest
       34

Delphi для резки стекла

18 голосов
/ 23 января 2012

Я использую Delphi XE2, и мне нравятся стеклянные эффекты, и я хочу «резать» стекло, как в инструментах для планшетов Windows 7.Если вы также знаете, как вырезать кнопку, я буду рад, если вы скажете мне, как.

enter image description here

Спасибо

Ответы [ 2 ]

5 голосов
/ 23 января 2012

Рисование в верхней области - это просто вопрос использования стеклянной рамки и рисования в не-клиентской области или, альтернативно, с помощью API DwmExtendFrameIntoClientArea.

Лучшим примером кода, который я видел для этого, является элемент управления «Лента» VCL, который предоставляет область «QAT» (панель быстрого доступа), закрашенную в «не клиентской области».

Обратите внимание, что автор должен думать не только о том, как выполнять рендеринг, когда системы Vista / Win7 имеют Glass Glass, но также и о том, как выполнять рендеринг в WinXp, Win7 и Vista, когда движок тем отключен. В модуле Vcl.Ribbon.pas (или просто Ribbon.pas, если вы в XE или более ранней версии) есть немного логики, посвященной этому.

Посмотрите на procedure TCustomRibbonQuickAccessPopupToolbar.NCPaint(DC: HDC); в источниках ленты Vcl.

Рисование непрямоугольной «расширенной области», которая выступает снизу, вероятно, является вопросом применения области отсечения пользовательского окна.

0 голосов
/ 24 января 2012

Вы имели в виду, что хотите фасонные формы?Если так, то

Формы неправильной формы

могут помочь.Я полагаю, что это будет работать на Windows 7 (обратите внимание на комментарий Реми в ответ).

hth

...