Подтвердить что ты не робот

Режущее стекло Delphi

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

enter image description here

Спасибо

4b9b3361

Ответ 1

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

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

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

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

Нанесение непрямоугольной "расширенной области", выступающей снизу, вероятно, связано с применением области отсечения пользовательского окна.

Ответ 2

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

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

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

HTH