TOC

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

مفاهيم التحكم:

تقديم نص WPF

في هذه المقالة ، سنناقش سبب جعل النص أحيانًا أكثر ضبابية مع WPF ، وكيف تم إصلاح ذلك لاحقًا وكيف يمكنك التحكم في تقديم النص بنفسك.

كما ذكرنا سابقًا في هذا البرنامج التعليمي ، يقوم WPF بالكثير من الأشياء بمفرده عند مقارنته بإطارات UI الأخرى مثل WinForms ، والتي تستخدم Windows API للعديد من الأشياء. هذا واضح أيضًا عندما يتعلق الأمر بتقديم النص - يستخدم WinForms واجهة برمجة تطبيقات GDI من Windows ، في حين أن WPF لديها تقديم النص الخاص بها ، لدعم الرسوم المتحركة بشكل أفضل فضلاً عن الطبيعة المستقلة للجهاز عن WPF.

لسوء الحظ ، أدى ذلك إلى ظهور نص ضبابي بعض الشيء ، خاصةً بأحجام الخطوط الصغيرة. كانت هذه مشكلة كبيرة إلى حد ما لمبرمجي WPF لبعض الوقت ، لكن لحسن الحظ ، قامت Microsoft بالكثير من التحسينات في مشغل تقديم نص WPF في .NET Framework الإصدار 4.0. هذا يعني أنه إذا كنت تستخدم هذا الإصدار أو إصدارًا أعلى ، فيجب أن يكون نصك جيدًا تقريبًا بنفس جودة البكسل.

التحكم في تقديم النص

مع الإطار NET 4.0، قررت مايكروسوفت أيضا إعطاء المزيد من السيطرة على تقديم النص إلى المبرمج، من خلال إدخال الفئة TextOptions مع خصائص TextFormattingMode و TextRenderingMode. يتيح لك ذلك تحديد كيفية تنسيق النص وتقديمه على مستوى التحكم بشكل خاص. ربما يكون هذا أفضل مثال ، لذلك ألق نظرة على الكود ولقطات الشاشة أدناه لترى كيف يمكنك التأثير على تقديم النص بهذه الخصائص.

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 تمنحك السيطرة على خوارزمية الحواف حيث يستخدم عند تقديم النص. له التأثير الأكبر في تركيبه مع إعداد العرض لخاصية TextFormattingMode، والذي سنستخدمه في هذا المثال لتوضيح الاختلافات:

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