首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于Graphics双缓冲,该怎么处理

2012-06-15 
关于Graphics双缓冲BufferedGraphicsContext current BufferedGraphicsManager.CurrentBufferedGraphic

关于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叠加

热点排行