2010-11-29 3 views
0

비트 맵에 C# 윈폼 그래픽 개체를 저장하려고, 아직 내가 Paint 이벤트의 외부에서이 코드 ArgumentException이 점점 오전 :페인트 외부의 그래픽을 비트 맵에 저장 하시겠습니까?

this.Graphics 단지 Paint 이벤트 처리기에서 설정
public Bitmap Bitmap 
{ 
    get 
    { 
     return new Bitmap(100, 100, this.Graphics); 
    } 
} 

, I 객체를 추측하는 것은 이벤트 외부에서 무효화됩니다. 이미지 저장을 위해 코드를 삽입하지 않아도되므로 성가신 일입니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

편집 : 컨트롤을 비트 맵으로 '드로잉'할 수 있어야하므로 그림 코드를 다시 요소해야합니다.

+0

전체 오류 메시지를 게시 하시겠습니까? 때까지 : UserControl.CreateGraphics() 시도 했습니까? – basti

+0

System.ArgumentException : 매개 변수가 유효하지 않습니다. System.Drawing.Bitmap..ctor (INT32 폭, INT32 높이, 그래픽 g) C에서 FlowSharp.FlowChartControl.get_Bitmap()에서 에서 는 : 사용자 \ \ 댄 \ 문서 내 보관 용 \ 프로그래밍 \ FlowSharp \ FlowChartControl을 \. cs : line 35 at FlowSharp.fFlowSharp.bMPToolStripMenuItem_Click (Object sender, EventArgs e) in C : \ Users \ Dan \ Documents \ My Dropbox \ Programming \ FlowSharp \ FlowSharpForm.cs : 행 441 – Dan

답변

1

예,이 폭탄됩니다. 이 생성자를 사용할 이유는 거의 없으며 비트 맵 해상도 만 설정합니다. 이것이 실제로 중요하다면 Bitmap.SetResolution() 메서드를 직접 사용하십시오.

0

그래픽을 사용하고 싶다면 this.CreateGraphics을 사용할 수 있습니다.

return new Bitmap(100, 100); 

public Bitmap Bitmap 
{ 
    get 
    { 
     using (var graphics = this.CreateGraphics()) 
     { 
      return new Bitmap(100, 100, graphics); 
     } 
    } 
} 

하지만

아마 충분할 것이다.

편집 :
당신이 그래픽이 비트 맵에서 객체를 생성 비트 맵 수정하려면 : 그래픽 오브젝트의 처리가 후

Bitmap bitmap = new Bitmap(100, 100); 
using (var graphics = Graphics.FromImage(bitmap)) 
{ 
    // modify bitmap 
} 
관련 문제