我有一个从DirectShow播放视频的图片框。我想在图片框上绘制一个矩形覆盖图,仅在该矩形中抓取图像。我找到了一些在图片框上绘制矩形的样本,但不是用于播放视频的图片框。如果有人有这方面的经验,请告诉我该怎么做。我很感激。非常感谢你。
************更新*****
正如您可以看到下面的图片,我创建了一个用户控件并将其添加到窗体控件中,我将此用户控件放在图片框(正在播放视频)上
mOverlay = new MyUserControl();
mOverlay.Location = new Point(50,50);
Form1.Controls.Add(mOverlay);
mOverlay.BringToFront();
我在这个用户控件上绘制了一个红色矩形,虽然我像这样设置了这个用户控件的透明,但它不起作用:
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent; //this here is MyUsercontrol
如何让这个usercontrol是透明的背景,以便我可以看到下面的视频?非常感谢。
答案 0 :(得分:1)
我的意思是这样的:
public partial class MyUserControl : UserControl
{
public MyUserControl()
{
InitializeComponent();
this.BackColor = Color.Red;
this.SizeChanged += MyUserControl_SizeChanged;
}
void MyUserControl_SizeChanged(object sender, EventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath();
Rectangle rc = this.ClientRectangle;
gp.AddRectangle(rc);
rc.Inflate(-4, -4);
gp.AddRectangle(rc);
this.Region = new Region(gp);
}
}
答案 1 :(得分:1)
我几周前用其他相机完成了这项工作,如果你想在Picture框上绘制矩形,只需处理你的图片框的绘画事件并画出你的矩形;
private void pictuerBox_Paint(object sender, PaintEventArgs e)
{
if(IsDrawRect) // Flag Variable to check if need to draw rect
{
Rectangle RectMark = new Rectangle(startX,StartY,Hieght,Widht); // your location to draw
e.Graphics.DrawRectangle(new Pen(Color.Red, 1), RectMark);
}
}
然后你必须从picturebox剪辑图像;
// Create Temp Bitmap Image
Bitmap bmpImgDisp =
new Bitmap(250, 250); // your size of rect.
using (Graphics g = Graphics.FromImage(bmpImgDisp))
{
g.DrawImage(YourMainpictuerBox.Image, new RectangleF(0, 0, 250, 250), rect size you want to clip {x,y,height,widht}, GraphicsUnit.Pixel);
}