程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 繪圖使用雙倍緩衝範例

繪圖使用雙倍緩衝範例

編輯:.NET實例教程
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(0, 0), new Point(x, y));//線條先繪製到新建的那張不可見的介面上
                    }
                }
            }
            displayGrahics.DrawImage(im, ClIEntRectangle);
            im.Dispose();
        }
    }

運行效果圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved