TOC

This article is currently in the process of being translated into Hindi (~96% done).

Control concepts:

WPF text rendering

इस लेख में, हम चर्चा करेंगे कि क्यों text को कभी-कभी WPF के साथ अधिक धुंधलापन प्रदान किया जाता है, यह बाद में कैसे तय किया गया और आप खुद से text के प्रतिपादनको कैसे नियंत्रित कर सकते हैं।

जैसा कि पहले से ही इस ट्यूटोरियल में बताया गया है, Winform जैसे अन्य UI फ्रेमवर्क की तुलना में WPF अपने आप ही बहुत कुछ करता है, जो कई, कई चीजों के लिए विंडोज API का उपयोग करेगा। यह भी स्पष्ट है जब text के प्रतिपादन की बात आती है - WinForms Windows से GDI API का उपयोग करता है, जबकि WPF का बेहतर एनिमेशन,device independent सपोर्ट के साथ-साथ अपना खुद का text रेंडरिंग कार्यान्वयन है।

दुर्भाग्य से, इसने पाठ को थोड़ा धुंधला कर दिया, विशेषकर छोटे फ़ॉन्ट आकारों में। यह कुछ के लिए WPF प्रोग्रामर के लिए एक बड़ी समस्या थी समय, लेकिन सौभाग्य से, Microsoft ने .NET फ्रेमवर्क संस्करण 4.0 में WPF text रेंडरिंग इंजन में बहुत सुधार किया। इसका मतलब है कि यदि आप यह संस्करण या उच्चतर,उपयोग कर रहे हैं आपका text पिक्सेल के समान लगभग अच्छा होना चाहिए।

Controlling text rendering

.NET फ्रेमवर्क 4.0 के साथ, Microsoft ने TextFormattingMode और TextRenderingMode properties के साथ TextOptions Class को शुरू करके प्रोग्रामर को टेक्स्ट रेंडरिंग का अधिक नियंत्रण देने का भी निर्णय लिया। यह आपको विशेष रूप से यह तय करने की अनुमति देता है कि कैसे text एक Control स्तर पर स्वरूपित और प्रस्तुत किया जाना चाहिए। यह शायद एक उदाहरण के साथ सबसे अच्छा सचित्र है, इसलिए आप यह देखने के लिए कि ये properties text रेंडरिंग को कैसे प्रभावित कर सकते हैं नीचे कोड और स्क्रीनशॉट पर एक नज़र घूमाये।

TextFormattingMode

TextFormattingMode प्रॉपर्टी का उपयोग करते हुए, आपको यह तय करना होता है कि टेक्स्ट को फॉर्मेट करते समय किस एल्गोरिथम का उपयोग किया जाए। आप 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 property आपको नियंत्रण प्रदान करती है कि text रेंडर करते समय किस antialiasing एल्गोरिथ्म का उपयोग किया जाए। इसमें सबसे ज्यादा असर TextFormattingMode property के लिए 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!