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

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

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

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

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

alt text

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


person Warren P    schedule 29.09.2010    source источник


Ответы (5)


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

Простые стеклянные ссылки

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

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

person David    schedule 30.09.2010

Эти posts о рисовании настраиваемой строки заголовка в Vista / Windows 7 может вас заинтересовать.

Образец изображения:

Образец

person Uli Gerhardt    schedule 29.09.2010

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

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

person Philip Rieck    schedule 29.09.2010

Хороший сайт, посвященный стеклянным компонентам, включая кнопку "Стекло":

http://rmklever.com/

person Warren P    schedule 30.06.2011