Csharp/CSharp Tutorial/GUI Windows Forms/Double Buffering

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Double Buffering

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
public class DoubleBuffering : Form
{
    public DoubleBuffering()
    {
        InitializeComponent();
        image = Image.FromFile("YourFile.bmp");
        tmrRefresh.Start();
    }
    private int imageSize = 0;
    private Image image;
    private void tmrRefresh_Tick(object sender, EventArgs e)
    {
        imageSize++;
        this.Invalidate();
    }
    private void DoubleBuffering_Paint(object sender, PaintEventArgs e)
    {
        Graphics g;
        g = e.Graphics;
        g.SmoothingMode = SmoothingMode.HighQuality;
        g.FillRectangle(Brushes.Yellow, new Rectangle(new Point(0, 0),this.ClientSize));
        g.DrawImage(image, 50, 50, 50 + imageSize, 50 + imageSize);
    }
    private void chkUseDoubleBuffering_CheckedChanged(object sender, EventArgs e)
    {
        this.DoubleBuffered = chkUseDoubleBuffering.Checked;
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new DoubleBuffering());
    }
    private System.ruponentModel.IContainer components = null;
    private void InitializeComponent()
    {
        this.ruponents = new System.ruponentModel.Container();
        this.tmrRefresh = new System.Windows.Forms.Timer(this.ruponents);
        this.chkUseDoubleBuffering = new System.Windows.Forms.CheckBox();
        this.SuspendLayout();
        // 
        // tmrRefresh
        // 
        this.tmrRefresh.Tick += new System.EventHandler(this.tmrRefresh_Tick);
        // 
        // chkUseDoubleBuffering
        // 
        this.chkUseDoubleBuffering.AutoSize = true;
        this.chkUseDoubleBuffering.Location = new System.Drawing.Point(12, 3);
        this.chkUseDoubleBuffering.Size = new System.Drawing.Size(127, 17);
        this.chkUseDoubleBuffering.TabIndex = 0;
        this.chkUseDoubleBuffering.Text = "Use Double Buffering";
        this.chkUseDoubleBuffering.UseVisualStyleBackColor = true;
        this.chkUseDoubleBuffering.CheckedChanged += new System.EventHandler(this.chkUseDoubleBuffering_CheckedChanged);
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(299, 277);
        this.Controls.Add(this.chkUseDoubleBuffering);
        this.Text = "Double Buffering";
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.DoubleBuffering_Paint);
        this.ResumeLayout(false);
        this.PerformLayout();
    }
    private System.Windows.Forms.Timer tmrRefresh;
    private System.Windows.Forms.CheckBox chkUseDoubleBuffering;
}