关于Graphics双缓冲
BufferedGraphicsContext current = BufferedGraphicsManager.Current;
BufferedGraphics bg = current.Allocate(this.CreateGraphics(), this.DisplayRectangle);
Graphics g = bg.Graphics;
Pen pen = new Pen(Color.Red);
pen.DashStyle = DashStyle.Dash;
g.DrawRectangle(pen, currRect);
//this.Invalidate();
bg.Render();
bg.Dispose();
这是我利用双缓冲来画矩形 currRect 是我定义的矩形 ,可是在画的过程中总是有一背景,请问有没有办法让背景成透明状或去除掉,大家帮我一下或是利用其他的方法来画,让其不闪烁都行,先在这谢谢了。。。。。。。。。。。。。。
[解决办法]
如果你用了双缓冲来画图,因该是不会闪的
背景透明需要你自己在画的时候写事件,重绘背景
[解决办法]
绘制前Clear
- C# code
Graphics g = bg.Graphics;g.Clear(BackColor);
[解决办法]
pen.DashStyle = DashStyle.Dash;
g.Clear(Color.White)
g.DrawRectangle(pen, currRect);
[解决办法]
- C# code
Bitmap bitmap = new Bitmap(DisplayRectangle.Width, DisplayRectangle.Height); Graphics g =Graphics.FromImage(bitmap); g.Clear(Color.White); Pen pen = new Pen(Color.Red); pen.DashStyle = DashStyle.Dash; g.DrawRectangle(pen, new Rectangle(30, 30, 66, 77)); g.Dispose(); bitmap.MakeTransparent(Color.White); pictureBox1.Image = bitmap;
[解决办法]
原来是要在视频上叠加画面.不闪是不可能的.除非改做成透明窗体置于视频上层.
[解决办法]
Bitmap B=New Bitmap(你的图片)
B.MakeTransparent(要挖空的颜色)
PictureBox1.Image=B
[解决办法]
可以考虑使用GraphicsPath叠加