كيفية استخدام ClearType مع التخزين المؤقت المزدوج على إطار مدمج؟
-
19-09-2019 - |
سؤال
عندما أرسم سلسلة في المخزن المؤقت، فإن الإخراج الناتج ليس مضادا للتعزيز بالطريقة التي أتوقعها. يوضح هذا الرمز المشكلة ... فقط ضع هذا في نموذج مشروع جهاز ذكي قياسي:
protected override void OnPaint(PaintEventArgs e)
{
Bitmap buffer = new Bitmap(Width, Height, PixelFormat.Format32bppRgb);
using(Graphics g = Graphics.FromImage(buffer))
{
g.Clear(Color.White);
g.DrawString("Hello, World", Font, new SolidBrush(Color.Black), 5, 5);
}
e.Graphics.DrawImage(buffer, 0, 0);
}
من ناحية أخرى، إذا قمت فقط بسحب السلسلة إلى كائن الرسومات التي تم تمريرها مع PaintEventArgs
, إنه يجعله يجعله في Cleartype تماما كما أتوقع.
أنا الرقم لدي لإنشاء مخزن مؤقت رسوماتي بطريقة تجعلها تستخدم تجانس الخط، لكنني لا أرى طريقة للقيام بذلك.
المحلول
اتضح أن تكون مشكلة بسيطة. عن طريق إزالة PixelFormat.Format32bppRgb
عملت بشكل جيد. يبدو أنك بحاجة إلى التأكد من أن المخازن المؤقتة لديك لها نفس تنسيقات البكسل ...
نصائح أخرى
قم بتعيين خاصية SmoothingMode لكائن الرسومات الخاص بك:
g.SmoothingMode = SmoothingMode.AntiAlias;
سيتعين عليك استخدام gdiplus.dll (يوجد عدد قليل من الأغلفة لهذا)، ولكنه متاح فقط على Windows Mobile 6 Professional (غير قياسي).