2009-04-08 4 views
0

앤티 앨리어스 또는 ClearType없이 렌더링 된 일부 문자를 포함하는 비트 맵을 생성해야한다는 요구 사항이 있습니다.WinForms로 앤티 앨리어스 제거되지 않은 글꼴 생성

Win32-land에서는 lfQuality가 NONANTIALIASED_QUALITY로 설정된 글꼴을 만들었을 것입니다.

나는 다음과 같은 방식으로 윈폼이 작업을 수행하는 것을 시도했다 :

using(Font smoothFont = new Font("Arial", 30, GraphicsUnit.Pixel)) 
    { 
    LOGFONT lf = new LOGFONT(); 
    smoothFontToLogFont(lf); 
    lf.lfQuality = NONANTIALIASED_QUALITY; 
    using (Font roughFont = Font.FromLogFont(lf)) 
    { 

그러나 roughFont 여전히 ClearTyped 텍스트를 렌더링하는 것 같다.

WinForms를 포기하고 C에서이 작업을 수행해야합니까? 아니면 여기에 누락 된 것이 있습니까? (내 LOGFONT 클래스와 관련 lfQuality defs는 프레임 워크 원본에서 바로 나온다. 그래서 그들은 정확하다.)

답변

1

나는 잘못된 장소를 찾고 있었고, GDI + 글꼴 렌더링을 이런 식으로 변경할 수 없다. 그래픽 객체 대신에이처럼 TextRenderingHint 속성을 설정해야합니다

gr.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit 
+0

고마워요! 이 솔루션을 사용하면 많은 문제를 해결할 수있었습니다. 내 이전의 슈퍼 퍼지 글꼴이 멋지다. :) – ChandlerPelhams

0

나는 비트 맵에 대해이 아니다 알아,하지만 난 내 문제에 대한 해결책을 찾고 있었다이 LabelEx 나왔다

using System.Drawing; 
using System.Drawing.Text; 

class LabelEx : System.Windows.Forms.Label 
{ 
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) 
    { 
     e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit; 
     base.OnPaint(e); 
    } 
} 
, 수정

누군가가 내가 찾을 수 있습니다. 유용한 정보

관련 문제