Java Tutorial/2D Graphics/RenderHints
Содержание
- 1 Handle screen updates
- 2 RenderingHints.KEY_TEXT_ANTIALIASING
- 3 RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR
- 4 RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB
- 5 RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR
- 6 RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB
- 7 RenderingHints.VALUE_TEXT_ANTIALIAS_ON
- 8 Set Rendering Hint and Ellipse
- 9 The five new fields in java.awt.RenderingHints class:
Handle screen updates
<source lang="java">
import java.awt.Graphics; import javax.swing.JComponent; import javax.swing.JFrame; class MyCanvas extends JComponent {
public void paint(Graphics g) { g.drawString (Long.toString(System.currentTimeMillis()), 10, 30); repaint(1000); }
} public class SettingFont {
public static void main(String[] a) { JFrame window = new JFrame(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setBounds(30, 30, 300, 300); window.getContentPane().add(new MyCanvas()); window.setVisible(true); }
}</source>
RenderingHints.KEY_TEXT_ANTIALIASING
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_GASP {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_GASP)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_LCD_HBGR {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_LCD_HRGB {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_LCD_VBGR {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_LCD_VRGB {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
RenderingHints.VALUE_TEXT_ANTIALIAS_ON
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemoVALUE_TEXT_ANTIALIAS_ON {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_ON)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>
Set Rendering Hint and Ellipse
<source lang="java">
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.Ellipse2D; import javax.swing.JComponent; import javax.swing.JFrame; public class EllipseRenderHints extends JFrame {
public static void main(String[] args) { new EllipseRenderHints(); } public EllipseRenderHints() { this.setSize(300, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.add(new PaintSurface(), BorderLayout.CENTER); this.setVisible(true); }
} class PaintSurface extends JComponent {
public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Shape s = new Ellipse2D.Float(20, 50, 250, 150); g2.setPaint(Color.BLACK); g2.draw(s); }
}</source>
The five new fields in java.awt.RenderingHints class:
<source lang="java">
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class TextQualityDemo {
public static void main(String[] args) { JFrame frame = new JFrame("LCD Text Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(630, 460)); frame.setContentPane(new MyPanel(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)); frame.pack(); frame.setVisible(true); }
} class MyPanel extends JPanel {
private Object hintValue; public MyPanel(Object hintValue) { this.hintValue = hintValue; this.setPreferredSize(new Dimension(300, 100)); String title = hintValue.toString(); Border border = new TitledBorder(title); this.setBorder(border); } public void paintComponent(Graphics g) { Dimension d = this.getSize(); BufferedImage backBuffer = (BufferedImage) this.createImage(d.width, d.height); Graphics2D g2 = backBuffer.createGraphics(); g2.setColor(Color.WHITE); g2.fillRect(0, 0, d.width, d.height); g2.setColor(Color.BLACK); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, hintValue); g2.drawRect(0, 0, d.width - 1, d.height - 1); g2.drawString("abcdefghijklmnopqrstuvwxyz", 20, 40); g2.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 20, 60); g2.drawString("1234567890-=!@#$%^&*()_+,./<>?", 20, 80); g.drawImage(backBuffer, 0, 0, this); }
}</source>