需要System.Drawing,具体资料很多有个 Windows画图白板源码 from AspxCn  不错,要的话留mail

解决方案 »

  1.   

    以前是用asp.net写draw的,不过它好象无法处理鼠标移动事件,我也在问着
    我现在试着写一个winform的看看,==
      

  2.   

    我说一个方法,不过没有试过。在鼠标mouseDown的事件里加一个标志变量,说明开始画线在MouseMove的事件里每次记录当前Cursor.X和Cursor.Y,并添加到一个数组里。然后在MouseUp的事件里停止这个变量,然后用画曲线,把这些点都连上就行了。
      

  3.   

    using System; 
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.IO;//用于文件存取 
    using System.Data;//用于数据访问 
    using System.Drawing;//提供画GDI+图形的基本功能 
    using System.Drawing.Drawing2D;//提供画高级二维,矢量图形功能 
    using System.Drawing.Imaging;//提供画GDI+图形的高级功能 namespace DRAW_SAMPLE
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null;
    private int startDrawing=0;//是否绘画
    private Point oldpt=new Point(0,0);//记录原来鼠标位置
    private Point newpt=new Point(0,0);//记录新的鼠标位置
    private Bitmap myBitmap=new Bitmap(500,500,PixelFormat.Format16bppRgb555);//产生一个image对象
    private Graphics myGraphics=null;
    public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(560, 382);
    this.Name = "Form1";
    this.Text = "Form1";
    this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
    this.Load += new System.EventHandler(this.Form1_Load);
    this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1()); } private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {

    if(startDrawing==1)
    {
    newpt=new Point(e.X,e.Y);
    myGraphics.DrawLine(new Pen(Color.Black,3),oldpt,newpt);//连线
    Form1.ActiveForm.BackgroundImage=(Image) myBitmap;//显示轨迹
    Form1.ActiveForm.Invalidate();//重画
    oldpt=newpt;
    }
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    myGraphics = Graphics.FromImage(myBitmap);//由myBitmap产生一个Graphics对象 
    myGraphics.Clear(Color.White);//绘制myBitmap底图 } private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(startDrawing==0)
    {
    oldpt.X=e.X ;
    oldpt.Y=e.Y;
    startDrawing=1;//第一次点击开始绘画

    }
    if(startDrawing==1)
    {
    startDrawing==3;//再次点击停止绘画并储存图片
    myBitmap.Save("c:\\hi.gif",ImageFormat.Gif);

    }
    } }
    }
      

  4.   

    更正下:
    private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(startDrawing==0)
    {
      oldpt.X=e.X ;
      oldpt.Y=e.Y;
      startDrawing=1;//第一次点击开始绘画
     }
    }
      

  5.   

    谢谢各位大侠的帮助.请问  atian25(阿天):
    我用你的代码可以画了,但它不能用按一下mouse左键就停止画,请问有解决办法吗? 谢谢.
      

  6.   

    不太清楚它怎么判断的,试验了个苯方法:private int startDrawing1=0;....private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(startDrawing==1)
    {
       newpt=new Point(e.X,e.Y);
       myGraphics.DrawLine(new Pen(Color.Black,3),oldpt,newpt);//连线
       Form1.ActiveForm.BackgroundImage=(Image) myBitmap;//显示轨迹
       Form1.ActiveForm.Invalidate();//重画
       oldpt=newpt;
       startDrawing1=1;
    }
    }private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(startDrawing==0)
    {
       oldpt.X=e.X ;
       oldpt.Y=e.Y;
       startDrawing=1;//第一次点击开始绘画
    }
    if(startDrawing1==1)
    {
      startDrawing=2;
    }
    }