2013-05-09 7 views
0

파일을 무제한 저장할 수 있습니다. 내 파일을 무한히 열 수 있습니다. 그리고 나서 파일을 저장하고 저장할 수 있습니다.파일을 연 후 저장할 수 없습니다.

그러나 파일을 연 후에 파일을 저장할 수 없습니다.

유형 'System.Runtime.InteropServices.ExternalException'의 첫 번째 예외가는 System.Drawing.dll

에 추가 정보를 발생 : 나는 다음과 같은 오류가 발생합니다 일반 오류가 GDI +에서 발생했습니다.

나는 처분하고 임시 비트 맵을 시도했지만 그게 효과가없는 것 같습니다. 파일을 열고 저장하는 위치도 같은 위치에 있으므로 파일을 덮어 쓰는 것이 문제 일 수 있습니까? 내 프로그램은 항상 당신이 할 수있는, 당신이 그것으로 완료 될 때까지 당신은 new Bitmap(path)를 사용할 때 파일이 메모리에로드되기 때문에, 파일을 덮어 오픈을 지킬 수없는

private void openToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      //Graphics.FromImage(bmap).Dispose(); 
      using (Graphics g = Graphics.FromImage(bmap)) 
      { 

       bmap = new Bitmap(@"C:\Users\Nick\final.bmp"); 
       g.DrawImage(bmap, panel1.Width, panel1.Height); 
      } 
      panel1.Invalidate(); 
     } 
private void saveToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      Graphics g = Graphics.FromImage(bmap); 
      temp =new Bitmap(bmap); 
      //Graphics.FromImage(bmap).Dispose(); 
      try 
      { 
       g.Dispose();   
       temp.Save(@"C:\Users\Nick\final.bmp", ImageFormat.Bmp); 
      } 
      catch (UnauthorizedAccessException ex) 
      { 
       Console.WriteLine(ex.Message); ; 
      } 
      catch (System.Runtime.InteropServices.ExternalException ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 

     } 
+0

이 (가)'개인 필드를 bmap'입니까? –

+0

아니요. '비트 맵 bmap = 새로운 비트 맵 '. 방금 테스트했지만 공개 또는 비공개 여부에 관계없이 여전히 오류가 발생합니다. – krikara

답변

1

temp.save에서 휴식 파일이 현재 열려 있으면 덮어 씁니다.

편집 다음

당신은 메모리 스트림에서 이미지를로드하는 방법입니다

// make sure you don't dispose of this until you're done with it 
var memoryStream = new MemoryStream(File.ReadAllBytes(path)); 
Image img = Image.FromStream(memoryStream); 
+0

이 파일을 닫은 다음 삭제하려고 시도했지만 닫을 방법을 찾을 수 없습니다. 그리고 나는 그것을 삭제할 수 없다. – krikara

+0

메모리 스트림에서 파일로드를 시도한 다음 삭제 했습니까? –

+0

아직 없습니다. 이걸 살펴 봅시다. – krikara

관련 문제