[英]C# DirectShow .Net Centre video with background
我正在使用DirectShow .NET以C#格式在控件中顯示視頻。 我需要在表單時使視頻充滿控件,從而使控件變大/變小(如果MainForm_ResizeMove的if分支處理此問題)。 如果設置了屬性,我還需要保持源視頻的大小。 MainForm_ResizeMove的else部分中的代碼對此進行了處理。 我的問題是,else部分將我的視頻放置在以控件為中心的正確位置上,背景為灰色。 由於我已將視頻位置設置為視頻的大小,因此未應用邊框顏色(因為在這種情況下沒有邊框)。 有人可以建議最好的解決方案是什么嗎?
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);
}
}
}
實際上很簡單,將控件的背景色設置為黑色!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.