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

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

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

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

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

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

alt text

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

4b9b3361

Ответ 1

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

Соединения простого стекла

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

Расширенный или касательный:

Ответ 2

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

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

Sample

Ответ 3

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

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

Ответ 4

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

http://rmklever.com/