Я пытаюсь нарисовать что-то на живом видео. На мой взгляд, лучший способ сделать это — обработать событие WM_PIANT.
Моя цель — сделать так, чтобы игрок сначала рисовал, а затем и приложение. Таким образом я смогу рисовать на видео.
Это означает, что я хочу получать уведомления каждый раз, когда нам нужно нарисовать новый кадр в окне, а затем обработать событие.
Я использую DirectshowNet, поэтому я программирую на C # (у меня есть все интерфейсы API C ++
есть). Я понимаю, что диспетчер графиков пересылает определенные оконные сообщения в Video Renderer, например WM_PAINT.
Как заставить игрока рисовать рамку до приложения, а не после?
WM_PAINT
это не лучший способ, более того, это неправильный путь.
Проверять, выписываться DxText
Пример из библиотеки DirectShow.NET. Его описание:
Пример приложения, показывающего, как накладывать текстовые строки на
поток данных. Поток читается из файла avi.
Это так близко к тому, чего вы пытаетесь достичь. Альтернативный подход показан в другом примере, BitmapMixer
:
BitmapMixer является примером того, как рисовать вещи поверх видео, используя
VMR9.Этот образец в основном построен на интерфейсе IVMRMixerBitmap9.
Этот интерфейс принимает растровые изображения как контекст устройства GDI или как Direct3D
Поверхность. Основным преимуществом Direct3D Surface является то, что он
позволяет использовать настоящую альфа-прозрачность. GDI DC не поддерживает
Альфа растровое изображение и прозрачность достигается с помощью цветовой клавиатуры.Этот образец динамически генерирует растровые изображения с использованием GDI +.
Других решений пока нет …