2011-04-09 4 views
3

이미지를 System.Drawing.Bitmap에 렌더링 한 다음 윈도우에 그려 넣었습니다. 그러나 가장자리가 앤티 앨리어싱 된 것을 볼 수 있습니다. 어떻게 이것을 방지합니까?윈도우에서 비트 맵을 그릴 때 원하지 않는 앤티 앨리어싱을 사용합니다.

약간 더 자세히 설명해주십시오. 비트 맵은 다음과 같이 작성됩니다.

new Bitmap (this.Width, this.Height, Imaging.PixelFormat.Format32bppArgb) 

그런 다음 픽셀을 Color.Black 또는 Color.White로 설정합니다. 나는 Bitmap.SetPixel과 Bitmap.LockBits를 사용하여 비트 맵 데이터에 직접 바이트를 쓰는 것을 시도했다. 비트 맵 일단

내가 내 Form.OnPaint 재정에 그릴 준비가되어 있습니다 :

  pea.Graphics.DrawImage 
       (!this.bitmap 
       , this.ClientRectangle 
       , new Rectangle (0, 0, this.Width, this.Height) 
       , GraphicsUnit.Pixel 
       ) 

모든 픽셀 중 하나를 검은 색 또는 흰색 그러나 나는 가장자리 픽셀이 회색 것을 볼 수 있습니다.

답변

9

InterpolationMode 속성을 NearestNeighbor 및 PixelOffsetMode를 None으로 설정하십시오.

pea.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; 
pea.Graphics.PixelOffsetMode = PixelOffsetMode.None; // or PixelOffsetMode.Half 

스케일되지 않은 그림 그리기가 가장 좋습니다. 이 경우 ClientSize.Width 및 Height 속성을 사용하여 비트 맵을 초기화하려고합니다. 현재 폼의 테두리와 캡션을 포함시켜 비트 맵을 너무 크게 만드는 것은 좋은 방법입니다. 나는 그 발췌문에서 말할 수 없다.

+1

귀하의 제안을 모두 사용했습니다. 감사. –

+1

나는 대부분의 사람들이'PixelOffsetMode' 절반을 원한다고 확신합니다. – Bitterblue

관련 문제