TOC

This article has been localized into Slovak by the community.

Koncept ovládacieho prvku:

Vykresľovanie textu vo WPF

V tomto článku budeme diskutovať o tom, prečo je text vo WPF niekedy viac rozmazaný, ako to bolo neskôr opravené a ako môžete sami ovládať vykresľovanie textu.

Ako už bolo uvedené, WPF robí oveľa viac vecí samo o sebe v porovnaní s inými UI frameworks, ako je WinForms, ktoré používajú Windows API pre veľa vecí. Tiež aj pokiaľ ide o vykresľovanie textu - WinForms používa GDI API od Windows, zatiaľ čo WPF má vlastnú implementáciu vykresľovania textu, lepšiu podporu animácií, ako aj nezávislosť od zariadenia.

Bohužiaľ to viedlo k tomu, že text bol trochu rozmazaný, najmä v malých veľkostiach písma. To bol na nejaký čas dosť veľký problém pre programátorov WPF, ale našťastie spoločnosť Microsoft urobila veľa vylepšení v technológii WPF rendering v .NET framework verzia 4.0. To znamená, že ak používate túto verziu, alebo vyššiu, text by mal byť takmer na pixel dokonalý.

Ovládanie vykresľovania textu

S platformou .NET Framework 4.0 sa spoločnosť Microsoft rozhodla poskytnúť programátorovi väčšiu kontrolu nad vykresľovaním textu zavedením triedy Textoptions a vlastností TextFormattingMode a TextRenderingMode. To vám umožní rozhodnúť sa, ako má byť text naformátovaný a vykresľovaný na úrovni kontroliek. Toto je najlepšie ukázať na príklade, takže sa pozrite na kód na snímke obrazovky nižšie, aby ste zistili, ako môžete ovplyvniť vykresľovanie textu s týmito vlastnosťami.

TextFormattingMode

Pomocou vlastnosti TextFormattingMode sa môžete rozhodnúť, ktorý algoritmus sa má použiť pri formátovaní textu. Môžete si vybrať medzi Ideal (predvolená hodnota) a Display . Zvyčajne by ste mali ponechať túto vlastnosť nedotknutú, pretože nastavenie Ideal bude najlepšie pre väčšinu situácií, ale v prípadoch, keď je potrebné vykresliť veľmi malý text, nastavenie Display môže niekedy priniesť lepší výsledok. Tu je príklad, kde môžete vidieť rozdiel (aj keď veľmi jemný):

<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

Vlastnosť TextRenderingMode poskytuje kontrolu nad tým, ktorý antialiasing (vyhladenie) sa používa pri vykresľovaní textu. Najväčší účinok má v kombinácii s nastavením Display pre vlastnosť TextFormattingMode , ktorú použijeme v tomto príklade na ilustráciu rozdielov:

<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>

Ako môžete vidieť, výsledný text sa v určitej miere líši a mali by ste to meniť len za špeciálnych okolností.


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!