2010-02-10 3 views
3

C# 응용 프로그램에서 앤티 엘리 어싱 된 글꼴을 사용하고 싶습니다. 나는 각 양식의 Paint 이벤트와 함께 할 수있는 방법을 here 읽고 : 우리는 아직 많은 형태를 가지고 있기 때문에전체 응용 프로그램에 TextRenderingHint를 사용하도록 설정할 수 있습니까?

public class SmoothingFonts : System.Windows.Forms.Form 
{ 
    ... 

    private void InitializeComponent() 
    { 
     ... 

     this.Paint += this.SmoothingFonts_Paint; 
    } 

    private void SmoothingFonts_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
    { 
     Font TextFont = new Font("Verdana", 25, FontStyle.Italic); 
     e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; 
     e.Graphics.DrawString("Sample Text", TextFont, Brushes.Black, 20, 150); 
    } 
} 

이 성가신 얻을 수 있습니다. 또한 모든 양식에서 우리는 여러 양식 유형을 사용합니다. TextRenderingHint의 설정을 전 세계적으로 설정할 수 있습니까?


EDIT 1

이 예제는이 같은 제대로 오래된 nobugz가 가리키는 것 그겁니다, 인용 최고의 TextRenderingHint이 시스템에 사용되는 것을 깨닫게 도와주었습니다 AntiAliasGridFit입니다. 하드웨어 플랫폼이 닫혀 있으므로이 시스템에 가장 적합한 구성이 응용 프로그램이 배포 될 모든 시스템에 가장 적합하다는 것을 확신 할 수 있습니다.

어디서나 TextRenderingHint의 기본 설정을 적용 할 수 있습니까? Windows Embedded Standard (이전 Windows XP Embedded) 이미지에서 응용 프로그램을 실행하고 있습니다.


편집 2

은 내가 XP 시스템에서 레지스트리에 의해 기본적으로 사용 TextRenderingHint의 유형을 설정할 수있는 것을 발견했다. 신청서에 의한 은 아니지만, 사용자 방법에 의한 입니다. 레지스트리 키는 다음과 같습니다.

HKCU\Control Panel\Desktop\FontSmoothing  {2 for activating font smoothing} 
HKCU\Control Panel\Desktop\FontSmoothingType {1 for Antialiasing, 2 for ClearType} 

감사합니다.

답변

2

당신이 링크 된 기사는 관련이없는 오래된 모두로 관리라고합니다. ClearTypeGridFit는 ClearType이 활성화 된 컴퓨터에서 이미 기본 앤티 앨리어싱 그리기 모드입니다. 텍스트 렌더링에는 TextRenderer 클래스를 사용해야하며 Graphics.DrawString()에는 문제가 있습니다.

SysInternals의 ZoomIt 유틸리티를 사용하여 ClearType 앤티 앨리어싱을 가져 오는지 다시 확인할 수 있습니다. 확대 할 때 글꼴 윤곽선을 따라 그려진 빨간색과 푸른 변두리를 볼 수 있어야합니다.

+0

정보 주셔서 감사합니다. 내 시스템에서 ClearType을 설정하면 글꼴이 정상적으로 표시된다는 것을 알고 있습니다. 그걸 할 수있는 어떤 지점? – yeyeyerman

+0

잘 모르지만 운영 체제에 대해 설명하지 않았습니다. ClearType은 적어도 XP 이후로 오랫동안 사용 가능했습니다. 사용 설정에 대해 질문이 있으면 superuser.com을 사용해보십시오. –

+0

어떻게 기본'TextRenderHint'를'AntiAliasGridFit'으로 설정할 수 있습니까? – yeyeyerman

0

나중에 인쇄하지 않을 경우 TextRenderer을 사용하여 GDI 텍스트 렌더링을 사용할 수 있습니다. 힌트를 렌더링 테이크 매개 변수로 그래픽 및 세트와 함께 DrawText에 방법과 다른 현명한 바로 유사한 클래스는 매번는

TextRenderer.DrawText( e.Graphics, 
          "Text", 
          font, 
          textRect, 
          ForeColor, 
          BackColor 
          ); 
+0

이것은 텍스트를 쓰는 것이지만 디자이너와 함께 창 양식 레이블을 정의합니다. 둘 다 사용하기 쉬운 솔루션이 있습니까? – yeyeyerman

+0

시스템 전체에서 문자열 그리기를 개선 할 수있는 ClearType 글꼴을 컴퓨터에서 활성화해야합니다. 데스크톱 속성에서 사용할 수있는 "사전 효과"나는 XP에서 생각합니다. 기본적으로 TextRenderer는 GDI + 텍스트 렌더링을 사용하고 e.Graphics.DrawString은 시스템 렌더링을 사용합니다. – affan

관련 문제