繪圖使用雙倍緩衝範例

代碼如下:

public   partial   class  Line : Form
    
{
        
public Line()
        
{
            InitializeComponent();
        }

        
protected override void OnPaint(PaintEventArgs e)
        
{
            
//不使用雙倍緩衝
            
//Graphics g = e.Graphics;
            
//g.FillRectangle(Brushes.White, ClientRectangle);
            
//Random r = new Random();
            
//for (int x = 0; x < ClientRectangle.Width; x++)
            
//{
            
//    for (int y = 0; y < ClientRectangle.Height; y += 10)
            
//    {
            
//        Color c = Color.FromArgb(r.Next(255), r.Next(255), r.Next(255));
            
//        using (Pen pen = new Pen(c, 1))
            
//        {
            
//            g.DrawLine(pen, new Point(0, 0), new Point(x, y));
            
//        }
            
//    }
            
//}

            
//使用雙倍緩衝
            Graphics displayGrahics = e.Graphics;
            Random r 
= new Random();
            Image im 
= new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
            Graphics g 
= Graphics.FromImage(im);//建立一張新的GDI+繪圖介面
            g.FillRectangle(Brushes.White, ClientRectangle);
            
for (int x = 0; x < ClientRectangle.Width; x++)
            
{
                
for (int y = 0; y < ClientRectangle.Height; y += 10)
                
{
                    Color c 
= Color.FromArgb(r.Next(255), r.Next(255), r.Next(255));
                    
using (Pen pen = new Pen(c, 1))
                    
{
                        g.DrawLine(pen, 
new Point(00), new Point(x, y));//線條先繪製到新建的那張不可見的介面上
                    }

                }

            }

            displayGrahics.DrawImage(im, ClientRectangle);
            im.Dispose();
        }

    }

運行效果圖: 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值