Aero: كيفية رسم نص واضح على الزجاج؟
-
27-09-2019 - |
سؤال
باستخدام GDI+ لرسم النص على الزجاج:
graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);
ستلاحظ أن النصوص الممكّن من ClearType يسحب جداً ضعيف على الزجاج:
ولكن مع تعطيل الزجاج ، بالطبع ، ارسم جيدًا:
عن طريق المقارنة هنا مكافحة الخطية تنعيم الخط:
وهنا لا تجانس الخط:
ملحوظة: لا يبدو أن تجانس الخط أفضل مما يفعله حقًا لأن Stackoverflow يقيم الصور الموجودة على شاشتك.
كيف أرسم نص واضح على الزجاج؟
ملحوظات
- Win32 الأصلي
- لا .NET (بمعنى آخر محلي)
- ليس winforms (بمعنى آخر محلي)
- GDI+ (بمعنى آخر محلي)
ما تقترحه مارك هو أنه لا يمكنك احترام تفضيلات المستخدم لتقديم النص (أي "SystemDefault
". ClearType لا يعمل على الزجاج ، ولا يمكنك استخدامه.
بمعنى آخر ، إذا كنت تقدم على الزجاج ، فيجب عليك تجاوز النص مع:
graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
وإلا يجب ترك TextRenderingHint
في الافتراضي TextRenderingHintSystemDefault
.
أنظر أيضا
المحلول
المشكلة متأصلة في طريقة تنفيذ الرسم. يتم رسم جميع النص على خلفية سوداء ، ثم تم تركيبها على خلفية زجاجية ؛ يتم دمج تجانس الخط شبه الشفاف مع الأسود لجعل الأسود شبه.