Мне удалось реализовать возможность воспроизведения видео в моем проекте приложения 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
однако, я ожидаю что-то вроде этого:
Возможно ли вообще добиться этого с помощью WinForms? Если это так, я хотел бы помочь с этим. Спасибо.