جافا تقديم الخط: يجب أن يتم إيقاف تشغيل AA General AA ل Subpixel AA؟
-
19-09-2019 - |
سؤال
لقد كنت أحاول تعزيز نظام واجهة المستخدم الرسومية مكتوبة في جافا لاستخدام الفادحة الفرعية وتم تنجح، باستثناء شذوذ واحد المتبقي. هذا هو اتباع سؤالي الآخر من أمس.
المشكلة المتبقية هي أن إعداد تقديم تلميحات تلميحات 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., ، لذلك التقاط الصور. قد أرى فقط تقديم المضيف، لكنني أظن أنه يعتمد كذلك على التنفيذ.