다음 링크에서 문제점을 설명하고 설명합니다.
- Paul Stovell WPF : 흐릿한 텍스트 렌더링
- www.gamedev.net 포럼
- Microsoft Connect : WPF 텍스트 렌더러가 작은 글꼴 크기에서 텍스트가 흐리게 흐려짐
설명 : WPF의 텍스트 선명도 . 이 링크에는 글꼴 비교가 있습니다.
이 문제에 대한 가능한 모든 솔루션을 수집하고 싶습니다. Microsoft Expression Blend는 WPF를 사용하지만 글꼴을 읽을 수 있습니다.
- Microsoft Expression Blend에서와 같이 어두운 배경
- 글꼴 크기 늘리기 및 글꼴 변경 (Calibri …) [link]
- 창 형태 포함 [link]
- GDI + 및 / 또는 Windows Forms TextRenderer 클래스를 사용하여 텍스트를 비트 맵으로 렌더링 한 다음 해당 비트 맵을 WPF 컨트롤로 렌더링하십시오. [링크]
더 이상의 해결책이 있습니까?
이것은 VS2010 (및 WPF4) 베타 2에서 수정 될 예정입니다.
IT가 마지막으로 해결 된 것처럼 보입니다!
Scott Hanselman의 ComputerZen.com : 완벽한 선명도를 갖춘 WPF 및 텍스트 흐림
답변
기술적 배경
windowsclient.net의 WPF 텍스트 프로그램 관리자 중 하나에서 WPF 텍스트 렌더링에 대한 자세한 기사가 있습니다. WPF의 텍스트 선명도 .
문제는 부드러운 애니메이션을 위해 선형 스케일링 글꼴 렌더링이 필요한 WPF로 귀결됩니다. 반면에 Pure ClearType은 글꼴을 사용하여 세로 줄기를 다음 픽셀로 밀어 넣는 데 약간의 자유가 필요합니다.
고전적인 “캐스케이드”패턴을 비교하면 차이가 분명합니다. 왼쪽 하단의 WinForms, 오른쪽 상단의 WPF :
나는 WPF의 글꼴 렌더링 특유성에 대한 팬이 아니지만 애니메이션이 Winforms 캐스케이드에서와 같이 뛰어 오르면 그 소름을 상상할 수 있습니다.
레지스트리와 함께 연주
저에게 관심이있는 것은 MSDN 기사 ” ClearType Registry Settings ” 에 대한 링크입니다 .
- 클리어 타입 레벨 : 서브 픽셀 힌트 량
- 감마 레벨
- 픽셀 구조 : 디스플레이 픽셀의 색상 줄무늬 배열 방법
- 텍스트 대비 수준 : 글꼴을 더 무겁게 만들기 위해 글리프 줄기의 너비를 조정합니다
이러한 설정을 사용하면 근본적인 문제가 실제로 개선되지는 않지만 민감한 사용자의 색상 번짐 효과를 줄이는 데 도움이 될 수 있습니다.
다른 접근법
텍스트 선명도 기사에서 제공 한 최상의 조언은 글꼴 크기를 늘리고 글꼴을 변경하는 것이 었습니다. Calibri는 표준 Segoe UI보다 더 잘 작동합니다. 웹 글꼴로 인기가 있기 때문에 Verdana도 사용해 보았지만 글꼴 크기를 애니메이션으로 표시 할 때 14pt와 15pt 사이의 무게가 급격히 증가했습니다.
WPF 4.0
WPF 4는 글꼴 렌더링에 영향을주는 지원이 향상되었습니다. WPF 텍스트 블로그 에는 변경 사항을 설명 하는 기사 가 있습니다 . 가장 눈에 띄게, 적어도 세 가지 종류의 텍스트 렌더링이 있습니다.
<grumble> 모든 디자이너에게 충분한 밧줄이어야합니다. </ grumble>
답변
.NET 4는 결국 WPF의 열악한 텍스트 렌더링 품질에 대한 솔루션을 가지고 있지만 숨겨져 있습니다. 모든 창에 대해 다음을 설정하십시오.
TextOptions.TextFormattingMode="Display"
기본값은 “이상적”이며 이름에서 의미하는 바가 아닙니다.
TextOptions에는 TextHintingMode와 TextRenderingMode의 두 가지 옵션이 있지만 둘 다 합리적인 기본값을 갖습니다.
답변
다른 날 DropShadowEffect가 적용된 테두리를 사용할 때 문제가 발생했습니다 . 결과적으로 해당 테두리 안의 모든 텍스트가 매우 흐릿했습니다. 텍스트가 다른 패널 안에 있거나 테두리 바로 아래에 있든 상관 없습니다. 효과 가있는 부모의 자식 인 텍스트 블록 적용된 영향을받는 것 같습니다.
이 특별한 경우에 대한 해결책은 효과가있는 테두리 안에 물건을 넣지 말고 그리드 (또는 서로 위에 내용을 넣는 것을 지원하는 다른 것)를 사용하고 텍스트와 동일한 셀에 사각형을 배치하는 것입니다 (예 : 시각적 트리에서 형제로) 영향을 미칩니다.
이렇게 :
<!-- don't do this --->
<Border>
<Border.Effect>
<DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
</Border.Effect>
<TextBlock Text="This Text Will Be Blurry" />
</Border>
<!-- Do this instead -->
<Grid>
<Rectangle>
<Rectangle.Effect>
<DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
</Rectangle.Effect>
</Rectangle>
<TextBlock Text="This Text Will Be Crisp and Clear" />
</Grid>
답변
답변
SnapToDevicePixels는 텍스트 렌더러가 아닌 WPF 모양 (선 등)에만 적용됩니다.
이 문제에 대한 알려진 해결 방법이 없습니다. Microsoft에 따르면이 동작은 “설계”입니다.
또한 Microsoft 포럼 에서이 스레드를 통해 문제를 논의하십시오. 문제에 대한 입장을 분명히하는 MS 담당자로부터 몇 가지 대답을 받았습니다.
답변
개발자의 관점에서 현재까지 알려진 “해결 방법”은 GDI + 및 / 또는 Windows Forms TextRenderer 클래스를 사용하여 텍스트를 비트 맵으로 렌더링 한 다음 해당 비트 맵을 WPF 컨트롤로 렌더링하는 것입니다. 명백한 성능 영향을 제외하고 기존 응용 프로그램의 문제를 완화하지는 않습니다.
이 문제에 대한 Microsoft Connect 티켓을 만들었습니다. (모든 부정에도 불구하고 지정된 추적기에 실제 버그 보고서가 없었습니다).
그것이 요청과 질문을 Microsoft에 전달하는 공식 채널 중 하나이므로 더 빠른 답변을 위해이를 진행하는 것이 좋습니다. 최소한 문제를 다른 방식으로 해결하려면 해당 티켓에 투표하거나 문제를 확인하면 Microsoft PM 및 엔지니어의 관심을 끌고이 우선 순위를 높일 수 있습니다.
답변
나는 그것을 버그로 보지 않지만 기본 구성은 실제로 매우 성가시다. 여기에 모든 조합의 비교가 있습니다
TextOptions.TextRenderingMode
TextOptions.TextFormattingMode
RenderOptions.ClearTypeHint
SnapToDevicePixels
텍스트 렌더링에 차이가 없습니다.
나는 선호한다:
TextOptions.TextRenderingMode="Auto"
TextOptions.TextFormattingMode="Ideal"
RenderOptions.ClearTypeHint="Auto"
수직선이 결코 흐릿하지 않습니다.
사용 된 글꼴은 Open Sans Light이며 최신 TeamViewer 에서처럼 잘 사용하면 정말 아름답습니다.
Mahapps.Metro를 사용하는 경우 문제는 TransitioningContentControl
https://github.com/MahApps/MahApps.Metro/issues/889입니다.
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)