繪圖使用雙倍緩衝範例

代碼如下:

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();
        }

    }

運行效果圖: 

你可能感兴趣的:(gdi+,random,class,im,c)