C#中picturebox控件 C#中picturebox控件怎样在播放视频的同时在上面画图啊,播放视频的时候总是会挡住在picturebox上画的线,但是我又需要在播放视频的同时画线,而且不要被视频挡住,就像是画图是在视频上画的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 picturebox播放视频?播放过程中画线?可以考虑在一个picturebox上覆盖一个透明容器,在透明容器上画线,下面的picturebox播放视频,这样就互不影响了给你一个透明容器的代码,你参考修改一下using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;using System.Drawing.Drawing2D;using System.Drawing.Imaging;namespace COMMON{ public partial class TransparentInfo : System.Windows.Forms.UserControl { private string m_strInfo; public void ShowInfo(string strInfo) //透明容器上显示文字 { m_strInfo = strInfo; this.Invalidate(); } private void TransparentInfo_MouseEnter(object sender, EventArgs e) { this.Visible = true; } public bool drag = false; public bool enab = false; private Color fillColor = Color.White; private int opacity = 75; //默认透明度 private int alpha; public TransparentInfo() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); SetStyle(ControlStyles.Opaque, true); this.BackColor = Color.Transparent; } public Color FillColor { get { return this.fillColor; } set { this.fillColor = value; if (this.Parent != null) Parent.Invalidate(this.Bounds, true); } } public int Opacity { get { if (opacity > 100) { opacity = 100; } else if (opacity < 1) { opacity = 1; } return this.opacity; } set { this.opacity = value; if (this.Parent != null) Parent.Invalidate(this.Bounds, true); } } //protected override CreateParams CreateParams //{ // get // { // CreateParams cp = base.CreateParams; // cp.ExStyle |= 0x20; // return cp; // } //} protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1); Color frmColor = this.Parent.BackColor; Brush brushColor; Brush bckColor; alpha = (opacity * 255) / 100; if (drag) { Color dragFillColor; Color dragBckColor; if (BackColor != Color.Transparent) { int Rb = BackColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255; int Gb = BackColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255; int Bb = BackColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255; dragBckColor = Color.FromArgb(Rb, Gb, Bb); } else dragBckColor = frmColor; if (fillColor != Color.Transparent) { int Rf = fillColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255; int Gf = fillColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255; int Bf = fillColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255; dragFillColor = Color.FromArgb(Rf, Gf, Bf); } else dragFillColor = dragBckColor; alpha = 255; brushColor = new SolidBrush(Color.FromArgb(alpha, dragFillColor)); bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor)); } else { Color color = fillColor; brushColor = new SolidBrush(Color.FromArgb(alpha, color)); bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor)); } if (this.BackColor != Color.Transparent | drag) { g.FillRectangle(bckColor, bounds); } if(m_strInfo!=null && m_strInfo.Length>0) { g.DrawString(m_strInfo, this.Font, new SolidBrush(this.ForeColor), 10, 10); } brushColor.Dispose(); bckColor.Dispose(); g.Dispose(); base.OnPaint(e); } protected override void OnBackColorChanged(EventArgs e) { if (this.Parent != null) Parent.Invalidate(this.Bounds, true); base.OnBackColorChanged(e); } protected override void OnParentBackColorChanged(EventArgs e) { this.Invalidate(); base.OnParentBackColorChanged(e); } }} 这个或许能帮到你!文章:《DotNet实现PictureBox重叠透明效果》URL: http://www.cnblogs.com/hanyonglu/archive/2012/04/04/2431625.html C#初学者弱弱的问一下:数据结构和c#编程有什么关系呀 C#的textbox文本框怎么添加提示建议的功能? 就像google的提示建议的功能一样? VB.NET的代码转为C# 如何在画3d图形啊 我的FolderBrowserDialog打开后除了三个按钮,没有任何目录 我的JS为什么时好时坏,请大家帮忙 如何从数据库链接字符串中提取有用信息 关于如何在.net环境中使用asp中的ewebeditor文本编辑器? 数据更新问题,我在前台更新了数据,但在后台没有更改。。。!!!!!!!! C#高手们,你们能解释这是什么现象吗? C#绑定数据的问题 请问这几个是什么控件
可以考虑在一个picturebox上覆盖一个透明容器,在透明容器上画线,下面的picturebox播放视频,这样就互不影响了给你一个透明容器的代码,你参考修改一下
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;namespace COMMON
{
public partial class TransparentInfo : System.Windows.Forms.UserControl
{
private string m_strInfo;
public void ShowInfo(string strInfo) //透明容器上显示文字
{
m_strInfo = strInfo;
this.Invalidate();
} private void TransparentInfo_MouseEnter(object sender, EventArgs e)
{
this.Visible = true;
} public bool drag = false;
public bool enab = false;
private Color fillColor = Color.White;
private int opacity = 75; //默认透明度
private int alpha; public TransparentInfo()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
} public Color FillColor
{
get
{
return this.fillColor;
}
set
{
this.fillColor = value;
if (this.Parent != null) Parent.Invalidate(this.Bounds, true);
}
} public int Opacity
{
get
{
if (opacity > 100) { opacity = 100; }
else if (opacity < 1) { opacity = 1; }
return this.opacity;
}
set
{
this.opacity = value;
if (this.Parent != null) Parent.Invalidate(this.Bounds, true);
}
} //protected override CreateParams CreateParams
//{
// get
// {
// CreateParams cp = base.CreateParams;
// cp.ExStyle |= 0x20;
// return cp;
// }
//} protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1); Color frmColor = this.Parent.BackColor;
Brush brushColor;
Brush bckColor; alpha = (opacity * 255) / 100; if (drag)
{
Color dragFillColor;
Color dragBckColor; if (BackColor != Color.Transparent)
{
int Rb = BackColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255;
int Gb = BackColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255;
int Bb = BackColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255;
dragBckColor = Color.FromArgb(Rb, Gb, Bb);
}
else dragBckColor = frmColor; if (fillColor != Color.Transparent)
{
int Rf = fillColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255;
int Gf = fillColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255;
int Bf = fillColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255;
dragFillColor = Color.FromArgb(Rf, Gf, Bf);
}
else dragFillColor = dragBckColor; alpha = 255;
brushColor = new SolidBrush(Color.FromArgb(alpha, dragFillColor));
bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor));
}
else
{
Color color = fillColor;
brushColor = new SolidBrush(Color.FromArgb(alpha, color));
bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor));
} if (this.BackColor != Color.Transparent | drag)
{
g.FillRectangle(bckColor, bounds);
} if(m_strInfo!=null && m_strInfo.Length>0)
{
g.DrawString(m_strInfo, this.Font, new SolidBrush(this.ForeColor), 10, 10);
} brushColor.Dispose();
bckColor.Dispose();
g.Dispose(); base.OnPaint(e);
} protected override void OnBackColorChanged(EventArgs e)
{
if (this.Parent != null) Parent.Invalidate(this.Bounds, true);
base.OnBackColorChanged(e);
} protected override void OnParentBackColorChanged(EventArgs e)
{
this.Invalidate();
base.OnParentBackColorChanged(e);
}
}
}
文章:《DotNet实现PictureBox重叠透明效果》
URL: http://www.cnblogs.com/hanyonglu/archive/2012/04/04/2431625.html