测试C#GDI+双缓冲高效绘图--BufferedGraphicsContext

测试C#GDI+双缓冲高效绘图
```

 #region 截图
 //获得当前屏幕的大小
 Rectangle rect = new Rectangle();
 rect = Screen.GetWorkingArea(this);
 //创建一个以当前屏幕为模板的图象
 Graphics g1 = this.CreateGraphics();
 //创建以屏幕大小为标准的位图
 System.Drawing.Image MyImage = new Bitmap(rect.Width, rect.Height, g1);
 Graphics g2 = Graphics.FromImage(MyImage);
 //得到屏幕的DC
 IntPtr dc1 = g1.GetHdc();
 //得到Bitmap的DC
 IntPtr dc2 = g2.GetHdc();
 //调用此API函数,实现屏幕捕获
 BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, 0, 0, 13369376);
 //释放掉屏幕的DC
 g1.ReleaseHdc(dc1);
 //释放掉Bitmap的DC
 g2.ReleaseHdc(dc2);
 //以JPG文件格式来保存
 MyImage.Save("Capture.jpg", ImageFormat.Jpeg);
 System.Windows.Forms.MessageBox.Show("当前屏幕已经保存为capture.jpg文件!");
  #endregion



        #region C#GDI+双缓冲高效绘图
        #region temp
        //Rectangle rectangle = e.ClipRectangle;//取出次窗体或者画布的有效区的矩形区域
        //BufferedGraphicsContext GraphicsContext = BufferedGraphicsManager.Current;//获取程序住缓冲区域的BufferedGraphicsContext(双缓存类,此类用于提供双缓冲的功能)对象
        //BufferedGraphics myBuffer = GraphicsContext.Allocate(e.Graphics, e.ClipRectangle);//获取缓冲区
        // Graphics g = myBuffer.Graphics;

        //指定在呈现期间像素偏移的方式。
        //g.PixelOffsetMode = PixelOffsetMode.HighQuality;//高质量低速度呈现
        //指定是否将平滑处理(消除锯齿)应用于直线、曲线和已填充区域的边缘。
        //g.SmoothingMode = SmoothingMode.HighQuality;// 指定高质量、低速度呈现。
        //g.Clear(BackColor);//或者使用invalidate方法==有效区的擦除
        //Pen bluePen2 = new Pen(Color.Blue);
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值