2013-09-16 2 views
5

Я пытаюсь создать простое прозрачное окно, где я могу рисовать с помощью Direct2D.ID2D1HwndRenderTarget всегда имеет черный фон вместо прозрачного

До сих пор, что я сделал:

  1. Created окно
  2. Установить стиль WS_EX_LAYERED
  3. Набор альфа цвет ключ, как #FFF
  4. Draw с помощью Windows Graphics белый прямоугольник
  5. Теперь окно прозрачно с пикселем alpha
  6. Затем сделайте цель из окна и нарисуйте, используя Direct2D
    • Сделать ALPHA _PREMULIPLIED целевой
    • Clear с #FFF с 0.0f альфа
  7. Окно теперь черный

Я просто не знаю, как сделать окно прозрачным. Если вы можете указать на мою ошибку, я был бы обязан

ответ

1

Я не думаю, что это возможно с помощью directX. Однако GDI действительно работает.

Посмотрите на источник здесь, чтобы посмотреть, как это делается: http://pastebin.com/NJf8wi2V

В источнике вы можете видеть, что есть возможность попытаться использовать DirectX/OpenGL. Однако, как видно из работы, они не работают.

+0

Спасибо за подтверждение. Я пошел вперед и вместо этого использовал GDI – bluejamesbond

1

Вот как это достижимо с помощью DirectComposition API (на русском языке)

http://www.oszone.net/25395/

В основном то, что автор делает

  1. Наборы WS_EX_NOREDIRECTIONBITMAP расширенный стиль, чтобы удалить Перенаправление битовую карту DWM. Содержимое окна теперь пуст.

  2. Создает DirectComposition устройству

  3. Создает Состав SwapChain (а ​​не HWND swapchain)

  4. Места один визуальный с SwapChain как содержание, как корень визуального.

  5. Оказывает SwapChain с использованием Direct2D API.

Он также хорошо работает с WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST для создания прозрачных наложений.

Смежные вопросы