Я использую Delphi XE2, и мне нравятся стеклянные эффекты, и я хочу "вырезать" стекло, как в планшетах Windows 7.
Если вы также знаете, как вырезать кнопку, я буду счастлив, если вы скажете мне, как это сделать.
Спасибо
Ответ 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.
Нанесение непрямоугольной "расширенной области", выступающей снизу, вероятно, связано с применением области отсечения пользовательского окна.