كيفية استخدام ClearType مع التخزين المؤقت المزدوج على إطار مدمج؟

StackOverflow https://stackoverflow.com/questions/1187945

سؤال

عندما أرسم سلسلة في المخزن المؤقت، فإن الإخراج الناتج ليس مضادا للتعزيز بالطريقة التي أتوقعها. يوضح هذا الرمز المشكلة ... فقط ضع هذا في نموذج مشروع جهاز ذكي قياسي:

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 (غير قياسي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top