소형 프레임 워크에서 이중 버퍼링과 함께 Cleartype를 사용하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1187945

문제

버퍼에 문자열을 그릴 때 결과 출력은 내가 기대하는 방식대로 안티 앨리어스가 아닙니다. 이 코드는 문제를 보여줍니다 ... 그냥 표준 스마트 장치 프로젝트의 form1.cs에 넣습니다.

protected override void OnPaint(PaintEventArgs e)
{
  Bitmap buffer = new Bitmap(Width, Height, PixelFormat.Format32bppRgb);
  using(Graphics g = Graphics.FromImage(buffer))
  {
    g.Clear(Color.White);
    g.DrawString("Hello, World", Font, new SolidBrush(Color.Black), 5, 5);
  }
  e.Graphics.DrawImage(buffer, 0, 0);
}

반면에 문자열을 PaintEventArgs, 예상대로 ClearType에서 렌더링됩니다.

글꼴 스무딩을 사용하는 방식으로 그래픽 버퍼를 만들어야한다고 생각하지만 그렇게 할 방법은 없습니다.

도움이 되었습니까?

해결책

간단한 문제로 밝혀졌습니다. 제거하여 PixelFormat.Format32bppRgb 잘 작동했습니다. 버퍼가 동일한 픽셀 형식을 가지고 있는지 확인 해야하는 것 같습니다 ...

다른 팁

그래픽 객체의 스무딩 모드 속성을 설정하십시오.

g.SmoothingMode = SmoothingMode.AntiAlias;

gdiplus.dll을 사용해야하지만 (이를 위해 랩퍼가 몇 개 존재 함) Windows Mobile 6 Professional (표준이 아닌)에서만 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top