关于双缓冲的一段代码!

Posted on 2006-11-16 23:06 ..... 阅读(431) 评论(0)  编辑 收藏 引用 所属分类: 个人随笔

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication8
{
 /// <summary>
 /// Form1 的摘要说明。
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;

  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   SetStyle(ControlStyles.ResizeRedraw | ControlStyles.Opaque, true);

   InitializeComponent();

   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(292, 273);
   this.Name = "Form1";
   this.Text = "Form1";
   this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);

  }
  #endregion

  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

  private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  {
//   Graphics g = e.Graphics;
//    Pen p = new Pen(Color.Red);
//    int width = ClientRectangle.Width;
//    int height= ClientRectangle.Height;
//    g.DrawLine(p, 0,0, width, height);
//    g.DrawLine(p, 0, height, width, 0);
//    p.Dispose();
//     Graphics g = e.Graphics;
//     Pen redPen = new Pen(Color.Red);
//     //call our isolated drawing routing
//     LineDrawRoutine(g, redPen);
//     redPen.Dispose();
//     g.Dispose();
   Graphics g = e.Graphics;
    Pen bluePen = new Pen(Color.Blue);
    Bitmap localBitmap = new Bitmap(ClientRectangle.Width,ClientRectangle.Height);
    Graphics bitmapGraphics = Graphics.FromImage(localBitmap);
    LineDrawRoutine(bitmapGraphics, bluePen);
//   bitmapGraphics.SmoothingMode = SmoothingMode.AntiAlias;
    g.DrawImage(localBitmap, 0, 0);
    bitmapGraphics.Dispose();

    bluePen.Dispose();
    localBitmap.Dispose();
    g.Dispose();
  }
  private void LineDrawRoutine(Graphics g, Pen p)
  {
    float width = ClientRectangle.Width;
    float height = ClientRectangle.Height;
    float xDelta = width / 20;
    float yDelta = height / 20;

    for (int i = 0; i < 20; i++)
   {
     g.DrawLine(p, 0, height - (yDelta * i), xDelta * i, 0);
    }
  }
 }
}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


posts - 22, comments - 1, trackbacks - 0, articles - 0

Copyright © .....