TOC

This article has been localized into Korean by the community.

컨트롤 컨셉:

WPF 텍스트 렌더링

이 챕터에서는 가끔 WPF 때문에 텍스트가 흐리게 렌더링되는 이유를 보고, 이후 수정되는 방법 및 텍스트 렌더링을 제어하는 방법에 대해 설명합니다.

이전에 이미 언급했듯이, WinForms과 같이 Windows API를 많이 사용하는 타 UI 프레임워크와 비교해서, WPF는 훨씬 많은 것들을 지원합니다. 이것은 텍스트 렌더링과 관련하여도 명확합니다 - WinForms는 Windows의 GDI API를 사용하고, WPF는 자체 텍스트 렌더링을 사용하기 때문에, 장치 독립적일 뿐만 아니라 애니메이션을 보다 잘 지원합니다.

안타깝게도, 이런 이유로 텍스트가 약간 흐려지고, 글꼴이 작은 크기로 표시됩니다. WPF 프로그래머에게는 좀 큰 문제였는데, 다행히 Microsoft는 .NET Framework 버전 4.0에서 WPF 텍스트 렌더링 엔진을 많이 개선을 해서, 이 버전 이상을 사용하는 경우 텍스트는 거의 픽셀처럼 완벽해졌습니다.

텍스트 렌더링 제어하기

Microsoft는 .NET Framework 4.0을 사용하여 TextFormattingModeTextRenderingMode 속성을 사용하여 TextOptions 클래스를 도입함으로써 프로그래머가 텍스트 렌더링을 보다 세부적으로 제어할 수 있도록 했습니다. 이를 통해 텍스트를 컨트롤 수준에서 포맷하고 렌더링하는 방법을 구체적으로 결정할 수 있습니다. 이것은 예제를 통해 가장 잘 설명 할 수 있습니다. 이러한 속성을 사용하여 텍스트 렌더링을 하면 어떤 영향을 줄 수 있는지 아래 코드와 스크린 샷에서 살펴 보십시오.

TextFormattingMode

TextFormattingMode 속성을 사용하면 텍스트 서식을 지정할 때 어떤 알고리즘을 사용해야 할지 선택할 수 있습니다. Ideal (기본값)과 Display 중에서 선택할 수 있습니다. 추천한 Ideal 설정은 대부분의 상황에 가장 적합하기 때문에 일반적으로 이 속성을 변경하지 않고 그대로 두는게 낫지만, 매우 작은 텍스트를 렌더링해야 하는 경우에는 Display 설정이 더 나은 결과를 가져올 수 있습니다. 차이점을 확인할 수 있는 예가 있습니다 (매우 미묘한 차이 입니다).

<Window x:Class="WpfTutorialSamples.Control_concepts.TextFormattingModeSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextFormattingModeSample" Height="200" Width="400">
    <StackPanel Margin="10">
        <Label TextOptions.TextFormattingMode="Ideal" FontSize="9">TextFormattingMode.Ideal, small text</Label>
        <Label TextOptions.TextFormattingMode="Display" FontSize="9">TextFormattingMode.Display, small text</Label>
        <Label TextOptions.TextFormattingMode="Ideal" FontSize="20">TextFormattingMode.Ideal, large text</Label>
        <Label TextOptions.TextFormattingMode="Display" FontSize="20">TextFormattingMode.Display, large text</Label>
    </StackPanel>
</Window>

TextRenderingMode

TextRenderingMode 속성을 사용하면 텍스트를 렌더링할 때 사용되는 앤티 앨리어싱(anti aliasing) 알고리즘을 제어 할 수 있습니다. TextFormattingMode 속성의 Display 설정과 함께 사용하면 가장 큰 효과가 있습니다. 다음 예제에서는 앞선 예제와의 차이점을 보여줍니다.

<Window x:Class="WpfTutorialSamples.Control_concepts.TextRenderingModeSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextRenderingModeSample" Height="300" Width="400">
    <StackPanel Margin="10" TextOptions.TextFormattingMode="Display">
        <Label TextOptions.TextRenderingMode="Auto" FontSize="9">TextRenderingMode.Auto, small text</Label>
        <Label TextOptions.TextRenderingMode="Aliased" FontSize="9">TextRenderingMode.Aliased, small text</Label>
        <Label TextOptions.TextRenderingMode="ClearType" FontSize="9">TextRenderingMode.ClearType, small text</Label>
        <Label TextOptions.TextRenderingMode="Grayscale" FontSize="9">TextRenderingMode.Grayscale, small text</Label>
        <Label TextOptions.TextRenderingMode="Auto" FontSize="18">TextRenderingMode.Auto, large text</Label>
        <Label TextOptions.TextRenderingMode="Aliased" FontSize="18">TextRenderingMode.Aliased, large text</Label>
        <Label TextOptions.TextRenderingMode="ClearType" FontSize="18">TextRenderingMode.ClearType, large text</Label>
        <Label TextOptions.TextRenderingMode="Grayscale" FontSize="18">TextRenderingMode.Grayscale, large text</Label>
    </StackPanel>
</Window>

결과를 보시다시피 텍스트의 외형과 모양이 약간 다릅니다. 특별한 상황이라면 텍스트를 이런식으로 변경해야 합니다.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!