جافا تقديم الخط: يجب أن يتم إيقاف تشغيل AA General AA ل Subpixel AA؟

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

سؤال

لقد كنت أحاول تعزيز نظام واجهة المستخدم الرسومية مكتوبة في جافا لاستخدام الفادحة الفرعية وتم تنجح، باستثناء شذوذ واحد المتبقي. هذا هو اتباع سؤالي الآخر من أمس.

المشكلة المتبقية هي أن إعداد تقديم تلميحات تلميحات key_antialias إلى value_antialias_on يؤدي إلى تجاهل key_text_antialiasing عند ضبطها على قيمة AA LCD (Subpixel). هل يستطيع اي شخص ان يسلط الضوء على هذا؟ في الوقت الحالي، أجبرت على Value_AntiAlias_off قبل تقديم نص وإيقاف تشغيله بعد تقديم النص (بحيث اللوحة الأخرى، مثل الدوائر، إلخ، هي AA'D).

هذه المشكلة ثبت من خلال برنامج الاختبار المحتوي على الذات أدناه. كما ترون إذا قمت بتشغيله، يتم رسم الدائرة مع AA عندما يكون الخط ليس، والعكس صحيح. سيكون من الجيد أن يكون لديك عملية مسبقة من AA للعمل لجميع اللوحة.


برنامج اختبار الوارد الذاتي

import java.awt.*;
import java.awt.event.*;

public class AwtTestFrame1c extends Panel {

AwtTestFrame1c() {
    setBackground(SystemColor.control);
    }

public void paint(Graphics gc) {
    Graphics2D                          g2d = (Graphics2D)gc;
    int                                 py=0;

    py=paintText(g2d,py,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB,true );
    py=paintText(g2d,py,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB,false);
    }

private int paintText(Graphics2D dgc, int py, Object val, boolean aa) {
    char[]                              txt=("The quick brown fox jumped over the lazy dog ("+val+", General AA: "+aa+")").toCharArray();

    if(aa        ) { dgc.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON ); }
    else           { dgc.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); }
    if(val !=null) { dgc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,val);                           }
    dgc.setFont(font);

    dgc.drawOval(5,py+5,15,15);
    dgc.drawChars(txt,0,txt.length,30,py+line-5);

    return (py+line);
    }

static private final Font                      font=new Font("SansSerif",Font.PLAIN,16);
static private final int                       line=25;

static public void main(String[] args) {
    Frame                               wnd=new Frame("AWT Antialiased Text Sample");

    wnd.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
            }
        });
    wnd.add(new AwtTestFrame1c());
    wnd.setSize(new Dimension(1000, 300));
    wnd.setVisible(true);
    }

}
هل كانت مفيدة؟

المحلول

قليلا من بديل حول وجدت هذا: علة 6263951..

على ما يبدو تم إصلاح المختجز في B17؟ أنا لست متأكدا بالضبط كيفية تفسير تقرير الخطأ.

بالتأكيد مكسورة هنا على 1.6.0_17-B04 (ماكو x 10.5).

نصائح أخرى

كنت تحديث virtualbox., ، لذلك التقاط الصور. قد أرى فقط تقديم المضيف، لكنني أظن أنه يعتمد كذلك على التنفيذ.

أوبونتو 9.10.AwtTestFrame UbuntuMac OS X 10.5AwtTestFrame Macويندوز 7AwtTestFrame WIn

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