2014-04-17 4 views
0

무언가를하는 방법, 그래픽이있는 양식에 비트 맵 파일로 그려지는 것을 저장하는 방법, 지금까지 시도한 모든 것이 효과가 없었습니다. 내가하고있는 일의 배경 비트, 난 무작위 지형 생성기를 만들려고 노력하고있어, 나는 모든 일을 가지고 있고 난 그저 파일이로드됩니다 때문에 비트 맵으로 그래픽스를 저장하는 방법을 알아야합니다 여기 그래픽을 비트 맵 이미지로 저장하는 방법

내 코드의 ... 다른 프로그램에 그 아이디어의 적어도 전체 지형을 만드는 데 사용 :

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Random_Terrian_1_x_1_pixel 
{ 
public partial class Form1 : Form 
{ 
    int start = 0; 
    int count = 0; 
    int layer = 251; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private async void button1_Click(object sender, EventArgs e) 
    { 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Height: " + this.Height + ", Width: " + this.Width); 
    } 

    private void placeBlocks1ToolStripMenuItem_Click(object sender, EventArgs e) 
    { 

     start = start + 10; 
     count = count + 1; 

     if (count >= 999) 
     { 
      // MessageBox.Show("Layer full"); 
     } 
     else 
     { 
      //this.Text = Convert.ToString(count); 
      Random rand = new Random(); 
      int num = rand.Next(1, 3); 
      SolidBrush blockstone = new SolidBrush(Color.Gray); 
      SolidBrush blockcoal = new SolidBrush(Color.Black); 



      if (num == 1) 
      { 

       Graphics g = this.CreateGraphics(); 
       g.FillRectangle(blockstone, new Rectangle(start, layer, 10, 10)); 
       g.Dispose(); 


      } 
      if (num == 2) 
      { 

       Graphics g = this.CreateGraphics(); 
       g.FillRectangle(blockcoal, new Rectangle(start, layer, 10, 10)); 
       g.Dispose(); 


      } 


     } 
    } 

    private void button1_Click_1(object sender, EventArgs e) 
    { 
     start = start + 10; 
     count = count + 1; 

     if (count >= 999) 
     { 
     // MessageBox.Show("Layer full"); 
     } 
     else 
     { 
      //this.Text = Convert.ToString(count); 
      Random rand = new Random(); 
      int num = rand.Next(1, 3); 
      SolidBrush blockstone = new SolidBrush(Color.Gray); 
      SolidBrush blockcoal = new SolidBrush(Color.Black); 



      if (num == 1) 
      { 

       Graphics g = this.CreateGraphics(); 
       g.FillRectangle(blockstone, new Rectangle(start, layer, 10, 10)); 
       g.Dispose(); 


      } 
      if (num == 2) 
      { 

       Graphics g = this.CreateGraphics(); 
       g.FillRectangle(blockcoal, new Rectangle(start, layer, 10, 10)); 
       g.Dispose(); 


      } 
     } 

    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void button2_Click_1(object sender, EventArgs e) 
    { 
     if (Convert.ToInt16(textBox1.Text) == 1) 
     { 
      layer = 251; 
      start = 0; 
     } 
     if (Convert.ToInt16(textBox1.Text) == 2) 
     { 
      layer = 241; 
      start = 0; 
     } 
     if (Convert.ToInt16(textBox1.Text) == 3) 
     { 
      layer = 231; 
      start = 0; 
     } 
     if (Convert.ToInt16(textBox1.Text) == 4) 
     { 
      layer = 221; 
      start = 0; 
     } 
     if (Convert.ToInt16(textBox1.Text) == 5) 
     { 
      layer = 211; 
      start = 0; 
     } 

    } 

    private async void placeByNumberToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     int placecount = 0; 
     while (placecount <= 19) 
     { 
      await Task.Delay(250); 
      button1.PerformClick(); 
     } 

    } 

    private void clearToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Graphics g = this.CreateGraphics(); 
     g.Clear(SystemColors.Control); 
    } 

    private void newToolStripButton_Click(object sender, EventArgs e) 
    { 
     Graphics g = this.CreateGraphics(); 
     g.Clear(SystemColors.Control); 
    } 
    } 

} 

답변

1

당신은을 저장할 수 없습니다직접,하지만 당신은 먼저 Bitmap을 만들 파생 그것에서 신선한 Graphics을의 Graphics에 그린 다음과 같이 대신 Bitmap을 저장할 수 있습니다

Bitmap bitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
Graphics g = Graphics.FromImage(bitmap); 

// Now you have a Graphics you can draw on as much as you want 
g.DrawRectangle(...); 

// Then, save it 
bitmap.Save(@"C:\MyImage.png", ImageFormat.Png); 
+0

좋아하지만 어떻게 내가 이미 그래픽을 얻을 것 그려진 것은 무작위 적이기 때문입니다. – user3349095

+0

'Graphics'를 만들기 전에'Bitmap'을 만드십시오. 그런 다음 위와 같이'Graphics'를 끌어 와서 * 그 위에 그립니다. –

+0

시원한가 그 방법을함으로써 그 – user3349095