Рисование / рендеринг текста через видео DirectX (владелец PictureBox Control как владелец) - PullRequest
0 голосов
/ 04 мая 2018

Мне удалось реализовать возможность воспроизведения видео в моем проекте приложения WinForms с использованием класса видео DirectX (хотя он и устарел). Моей целью было использовать это видео в качестве фона для конкретной формы с минимальным контролем. Я пытался использовать GIF-файлы, но качество цвета просто недостаточно хорошее, с другой стороны, использование APNG оставляет меня с невероятно большим размером файла .apng.

Поскольку классу видео Dx необходим элемент управления для воспроизведения видео - я использовал элемент управления PictureBox, чтобы сделать его там, где его также может заменить элемент управления Panel. Моя следующая цель - нарисовать / визуализировать текст поверх элемента управления PictureBox, который выступает в роли хоста для видео. Это связано с тем, что элементы управления Label не прозрачны и не поддерживают прозрачность на 100%, поэтому я пытаюсь импровизировать, отрисовывая строку, используя Graphics.DrawString() или TextRenderer.DrawText().

Я пробовал оба варианта, но ни один из них не смог отобразить текст так, как я ожидал.

Ниже приведен мой фрагмент кода над Paint Event для элемента управления PictureBox:

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
     var font = new Font("Helvetica Neue LT Std 65", 15);
     var brush = new SolidBrush(Color.White);
     var point = new Point(55, 150);

     string welcomeText = "Welcome, User!";

     // e.Graphics.DrawString(welcomeText, font, brush, point);

     TextRenderer.DrawText(e.Graphics, welcomeText, font, point, Color.White);

     pictureBox1.Refresh();
}

при запуске моего исходного кода на самом деле ничего не происходит, как в этом GIF: https://imgur.com/3uYdCF1

однако, я ожидаю что-то вроде этого: enter image description here

Возможно ли вообще добиться этого с помощью WinForms? Если это так, я хотел бы помочь с этим. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...