Документация и примеры API для рисования на Windows Aero Glass (DWM, GDI, GDI +) для всех программистов Win32 - PullRequest
18 голосов
/ 29 сентября 2010

Я ищу хорошие ресурсы для обучения использованию API-интерфейсов Win32 / GDI или чего-либо другого, что заменяет его для рисования и рисования непосредственно с использованием Win32 API-интерфейса в стеклянную форму.

Пока я использую Delphi, я пометил это как Delphi или Visual C ++. Будем благодарны за любые примеры кода и статьи, которые вы сможете найти. Статьи MSDN, кажется, не написаны об этом.

В качестве цели представим, что вы хотите либо: (а) Воспроизвести, что делает Google Chrome (вкладки как часть стеклянной рамки) (b) Воспроизвести, что делает MS Office 2010 (кнопка «Сохранить» на стеклянной раме, называемая в MFC для VS 2010 как «Панель быстрого доступа» (см. рисунок ниже).

Я не использую MFC, но если изучение источников MFC станет хорошим источником информации, мне любопытно узнать, где в источниках MFC или исходных источниках BCG (у меня есть оба) реализован рендеринг панели быстрого доступа / код покраски.

alt text

Обновление: соответствующая ссылка из одного из приведенных ниже ответов показывает сообщение NC (nonclient) Paint и способы его обработки при рисовании на стеклянной раме, а также статью MSDN об этом здесь .

Ответы [ 5 ]

20 голосов
/ 30 сентября 2010

Это подмножество моей папки закладок "Стекло", результат лота исследований / поисков по этой теме. Я нашел все это полезным для изучения стекла и решения различных задач на нем. Большинство из них включают в себя код Delphi, но я отметил, что это для другого языка.

Ссылки из обычного стекла

  • Использование полупрозрачных окон с Delphi : хорошее введение (с самых основ) для использования Glass в формах Delphi
  • Пользовательский рисунок на стекле : описывает, как рисовать растровое изображение или другое изображение на стеклянной области окна. Обложки альфа-каналов и т. Д., Хороший обзор
  • Использование стекла в проекте VC ++ : охватывает включение стекла, рисование текста, обработку уведомлений и т. Д. - хорошее общее представление о том, как это работает. Многие базовые детали обрабатываются VCL (например, свойство GlassFrame и внутренняя часть TForm заботятся о многом из этого), но очень полезно понять основы его реализации в любом случае на уровне API
  • Как рисовать в не-клиентской области : это показывает, как нарисовать что-то вроде панели инструментов Office в строке заголовка. .Net код, но переводимый
  • Настройка пользовательской строки заголовка : очень подробная статья о рисовании вне клиентской области (в Delphi, поэтому код Delphi). Затем следует part 2 , который демонстрирует полностью захват всего окна и имитацию стандартной строки заголовка самостоятельно. Эти две статьи позволят вам подражать Office и Chrome , как вы и просили в вопросе
  • Как настроить различные элементы управления VCL для лучшей работы на стеклянной поверхности : VCL не очень хорошо поддерживает стекло. Вы часто будете получать артефакты или элементы управления, просто не рисуя должным образом, независимо от того, что вы делаете, чтобы попытаться решить их. В этой статье перечислены основные визуальные компоненты VCL (метки, кнопки, индикаторы выполнения и т. Д.) И что нужно настроить для каждого из них, чтобы они рисовались идеально или, по крайней мере, «как можно лучше», когда они размещены на стеклянной поверхности

Продвинутый или тангенциально связанный:

6 голосов
/ 29 сентября 2010

Эти сообщения при рисовании пользовательской строки заголовка в Vista / Windows 7 могут вас заинтересовать.

Пример изображения:

Sample

5 голосов
/ 29 сентября 2010

Я уверен, что вы нашли страницу MSDN о DWM . В нем много тем и нескольких примеров. В некоторых «обзорных» статьях есть примеры (например, DWM Blur Behind Overview ).

К сожалению, кроме документации, очень мало хороших статей. Вы можете начать с Использование стекла в кодпроекте и взглянуть на детектирование стекла в delphi - после этого использование функций прямо из документа не так уж плохо. К счастью, на практике все они довольно просты.

2 голосов
/ 30 июня 2011

Хороший веб-сайт для стеклянных компонентов, включая кнопку Glass:

http://rmklever.com/

0 голосов
/ 30 сентября 2010
...