2013-03-07 5 views
-1

나는 내 양식에 TextBox가 있고 아래와 같이 문자열을 그립니다.사용자 지정 그리기 텍스트 C#

Font myFont = new Font("Arial",18F,FontStyle.Regular,GraphicsUnit.Point,128); 
Graphics g = myTextBox.CreateGraphics(); 
Brush b = new SolidBrush(Color.Red); 
g.DrawString("Item Drawn with DrawString",myFont ,b,new PointF(1,1)); 

텍스트 상자에 표시되는 문자열. 그런 다음 코드 아래에서 시도했습니다.

Font myFont = new Font("Arial",18F,FontStyle.Regular,GraphicsUnit.Point,128); 
Graphics g = myTextBox.CreateGraphics(); 
TextRenderer.DrawText(g,"Item Drawn with DrawText",myFont,new Point(1,1),Color.Red); 

여기서 문제가 발생합니다. 두 가지 방법 g.DrawString()과 은 동일한 글꼴을 사용하지만 두 가지 글꼴 스타일이 있습니다. 즉, 일부 문자는 다르게 렌더링됩니다. 글꼴에서 "128"대신 "1"을 사용하면 두 방법 모두 문자를 고유 한 것으로 렌더링합니다.

글꼴을 GdiCharSet(128) 값으로 변경하면 g.DrawString() 메서드를 사용하는 동안 아무 효과가 없습니다. 내 질문에 g.DrawString() 메서드는 GdiCharSet 값을 제외하는 이유는 무엇입니까? 이 때문에

답변

0

:

gdiCharSet 매개 변수는 Windows SDK 헤더 파일 WinGDI.h에 정의 된 목록에서 값을합니다. Windows Forms 응용 프로그램은 트루 타입 글꼴을 지원하며 OpenType 글꼴을 제한적으로 지원합니다. familyName 매개 변수가 응용 프로그램을 실행중인 컴퓨터에 설치되어 있지 않거나 지원되지 않는 글꼴을 지정하면 Microsoft Sans Serif가 대체됩니다.

(From the MSDN documentation)

굴림 트루 타입 글꼴이며 유니 코드를 지원하기 때문에, 당신은 지금까지 내가 알고 같이 GDI 문자 세트를 설정 할 필요가 없습니다.

관련 문제