System.Drawing .Graphics   g;

System.Drawing .Image b = new System.Drawing .Bitmap (200,100);
g = System.Drawing .Graphics.FromImage(b);

System.Drawing .Pen p = new System.Drawing .Pen(System.Drawing .Color .Blue ,3);
g.DrawEllipse ( p,50,25,80,40);
b.Save ("dog.bmp",System.Drawing .Imaging .ImageFormat.Bmp );
g.dispose();

解决方案 »

  1.   

    用二进制读取这个位图,即用
    BinaryWriter类来读取
    把读取的这个内容存放到一个缓冲区数组比如byte[] mybyte=new mybyte[length];
    然后用FileStream把缓冲区内容读到你选择的文件下,比如:
          SaveFileDialog savefile=new SaveFileDialog(); 
          string filename=savefile.FileName;  //保存到的文件名
          FileStream fs=new FileStream(filename,FileAccess.Read,FileMode.CreateNew);
          fs.Write(mybyte);  //把缓冲区的内容读到文件中
          fs.Flush();
          fs.Close();
    ////////////////////////////////////                                        wish u good luck
                                                   Greatsft
      

  2.   

    to wangsaokui:你说的是在一个事件中的吧?那样是可以的,可我想在两个不同事件中实现它,不知道怎么实现呢???
    to greatsft:那如果我要用鼠标画图岂不是要每画一笔就要存到缓冲区阿?有没有方法可以把bitmap中graphics的当前状态取过来啊?
      

  3.   

    那就是我说的方法呀比如有两个事件,其实一个是savebtn_Click(object obj,EventArgs ea)
        {         ...   //我上述说的方法
         }
    savebtn_Click是处理保存的
      

  4.   

    能再说的详细一点吗?因为我是新手,对BinaryWriter、stream什么的都不是很熟,谢谢阿
      

  5.   

    SaveFileDialog savefile=new SaveFileDailog();
    string filename=savefile.FileName;
    FileStream fs=new FileStream(filename,FileAccess.Read,FileMode.Create);
    BinaryWriter bw=new BinaryWriter(fs,System.Text.Encoding.ASCII);
    bw.Write(mybyte);
    bw.Flush();
    bw.Close();
    fs.Close();
      

  6.   

    能举个例子吗??是不是鼠标点过的每个位子都要保存吗?另外byte[] mybyte=new mybyte[length],该怎么用呢?