Я использую DirectShow .NET для отображения видео в элементе управления в форме C #.Мне нужно иметь видео для заполнения элемента управления, когда форма и, следовательно, элемент управления становится больше / меньше (ветвь if MainForm_ResizeMove обрабатывает это).Мне также требуется поддерживать размер исходного видео, если установлено свойство.Код в разделе else MainForm_ResizeMove обрабатывает это.Проблема в том, что в другом разделе мое видео размещено в правильном положении по центру элемента управления, а фон - серый.Так как я установил положение видео на размер видео, цвет рамки не применяется (так как в этом случае границы нет).Может кто-нибудь посоветовать, каким будет лучшее решение?
private IVMRWindowlessControl9 windowlessCtrl = null;
...
private void MainForm_Paint(object sender, PaintEventArgs e)
{
if (windowlessCtrl != null)
{
IntPtr hdc = e.Graphics.GetHdc();
int hr = windowlessCtrl.SetBorderColor(0x00FFFFFF);
hr = windowlessCtrl.RepaintVideo(this.Handle, hdc);
e.Graphics.ReleaseHdc(hdc);
}
}
private void MainForm_ResizeMove(object sender, EventArgs e)
{
if (windowlessCtrl != null)
{
if (fillScreen || (this.ClientRectangle.Width < streamFrameWidth) || (this.ClientRectangle.Height < streamFrameHeight))
{
int hr = windowlessCtrl.SetVideoPosition(null, DsRect.FromRectangle(this.ClientRectangle));
}
else
{
Rectangle rect = new Rectangle((this.ClientRectangle.Width / 2) - (streamFrameWidth / 2),
(this.ClientRectangle.Height/ 2) - (streamFrameHeight / 2),
streamFrameWidth, streamFrameHeight);
int hr = windowlessCtrl.SetVideoPosition(null, rect);
}
}
}