2013-02-04 4 views
1

저는 C#에서 Graphics 클래스를 많이 연구하지는 않았지만, 저에게 재미있는 시간 (코딩 통과 시간)이 필요하다는 것을 알았습니다.'Graphics'에 의해 생성 된 그래픽 숨기기

그래픽으로 그려진 그림을 (양식에 보이기 전에) 저장하는 방법이 있는지 알고 싶습니다. 그리하여 전체 세그먼트를 그리지 않고 동시에 그려야합니다. 하나. 세그먼트 란 Graphics 클래스를 사용하여 드로잉 할 수있는 셰이프의 컬렉션을 의미합니다.

다른 말로하면 .FillRectangle 또는 이와 동등한 번호를 호출하여 화면에 표시하려고 시도하기 전에이 모든 것을 그려야합니다.

또한 GDI + 등의 기존 메서드를 사용하지 않고 그래픽을 그릴 수있는 방법이 있습니까?

내가 놓친 것이 있으면 알려주세요.

편집 코드 :

당신이 진정한 모든 시간을 DoubleBuffered 속성을 떠나 프레임 워크가 그것을 처리 할 경우 작동해야하고 있던 무엇
 using (Graphics formGraphics = df.CreateGraphics()) 
     { 
      this.DoubleBuffered = true; 
      foreach (Dot d in memmap) 
      { 
       c = Color.FromArgb(d.r, d.g, d.b); 
       using (SolidBrush brush = new SolidBrush(c)) 
       { 
        formGraphics.FillRectangle(brush, d.x, d.y, 1, 1); 
       } 
      } 
      this.DoubleBuffered = false; 
     } 
+0

간단히 이미지에서 그래픽으로 그리기 (표시되지 않음)가 트릭을 수행하지 않습니까? 모든 그리기 방법을 호출 한 후에 그래픽을 표시 할 수있는 양식/이미지로 설정할 수 있습니다. – Martheen

+0

이것은 사실이고 나는 그렇게하려고 생각했다. 그러나 그것은 그것이 처음에 그려야한다는 것을 의미 할 것이다. 그리고 그것을 위해 형태를 만들 수있다. 그것은 숨겨져 있고 신을 위해 그것을 고칠 것이다. 나는 그것을 시도해 볼 것이기 때문에 미안하다. –

+0

이상하게도 폼을 유지하지 않고 빈 이미지를 만드는 것만 가능합니다 (도구 상자에서 생성하는 대신 var blah = 새로운 Bitmap (blahblah)처럼) – Martheen

답변

0

. 너 그거 해봤 니? 어쨌든, 나는 더 많은 컨트롤을 가지고 내 코드에 이중 버퍼를 생성하는 것을 선호 : 당신이 formGraphics 및 실행 중에 살아 bufferendGraphics을 유지하는 경우 위의 코드는 더 비트를 최적화 할 수

using 
(
    var bufferedGraphics = BufferedGraphicsManager.Current.Allocate(formGraphics, 
     new Rectangle(0, 0, width, height)); 
) 
{ 
    //Draw with bufferendGraphics.Graphics 
    bufferedGraphics.Render(); 
} 

...하지만 소개하고 그 누수가있는 경우 출입자가 ​​닫히기 전에 처분해야합니다.

그런데 왜 CreateGraphics를 사용하고 있습니까? 폼의 OnPaint를 재정의하고 그래픽을 PaintEventArgs에서 가져옵니다.

관련 문제