소형 프레임 워크에서 이중 버퍼링과 함께 Cleartype를 사용하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
버퍼에 문자열을 그릴 때 결과 출력은 내가 기대하는 방식대로 안티 앨리어스가 아닙니다. 이 코드는 문제를 보여줍니다 ... 그냥 표준 스마트 장치 프로젝트의 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 (표준이 아닌)에서만 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow