⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renderqualitytest.java

📁 关于:Java2核心技术卷二 配套源码.
💻 JAVA
字号:
/**
 * @version 1.00 1999-09-11
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;

public class RenderQualityTest
{  public static void main(String[] args)
   {  JFrame frame = new RenderQualityTestFrame();
      frame.show();
   }
}

class RenderQualityTestFrame extends JFrame
   implements ActionListener
{  public RenderQualityTestFrame()
   {  setTitle("RenderQualityTest");
      setSize(400, 400);
      addWindowListener(new WindowAdapter()
         {  public void windowClosing(WindowEvent e)
            {  System.exit(0);
            }
         } );

      checkBoxContainer = Box.createVerticalBox();

      antiAliasingBox
         = makeCheckBox("Antialiasing");
      qualityRenderingBox
         = makeCheckBox("Quality rendering");
      ditheringBox
         = makeCheckBox("Dithering");
      textAntiAliasingBox
         = makeCheckBox("Font antialiasing");
      fractionalMetricsBox
         = makeCheckBox("Fractional font metrics");
      qualityAlphaInterpolationBox
         = makeCheckBox("Quality alpha interpolation");
      qualityColorRenderingBox
         = makeCheckBox("Quality Color rendering");

      Container contentPane = getContentPane();
      canvas = new RenderQualityPanel();
      contentPane.add(canvas, "Center");
      contentPane.add(checkBoxContainer, "North");
   }

   JCheckBox makeCheckBox(String title)
   {  JCheckBox box = new JCheckBox(title);
      box.addActionListener(this);
      checkBoxContainer.add(box);
      return box;
   }

   public void actionPerformed(ActionEvent event)
   {  // get values from all check boxes
      RenderingHints hints = new RenderingHints(null);
      hints.put(RenderingHints.KEY_ANTIALIASING,
         antiAliasingBox.isSelected()
            ? RenderingHints.VALUE_ANTIALIAS_ON
            : RenderingHints.VALUE_ANTIALIAS_OFF);
      hints.put(RenderingHints.KEY_RENDERING,
         qualityRenderingBox.isSelected()
            ? RenderingHints.VALUE_RENDER_QUALITY
            : RenderingHints.VALUE_RENDER_SPEED);
      hints.put(RenderingHints.KEY_DITHERING,
         ditheringBox.isSelected()
            ? RenderingHints.VALUE_DITHER_ENABLE
            : RenderingHints.VALUE_DITHER_DISABLE);
      hints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
         textAntiAliasingBox.isSelected()
            ? RenderingHints.VALUE_TEXT_ANTIALIAS_ON
            : RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
      hints.put(RenderingHints.KEY_FRACTIONALMETRICS,
         fractionalMetricsBox.isSelected()
            ? RenderingHints.VALUE_FRACTIONALMETRICS_ON
            : RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
      hints.put(RenderingHints.KEY_ALPHA_INTERPOLATION,
         qualityAlphaInterpolationBox.isSelected()
            ? RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY
            : RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
      hints.put(RenderingHints.KEY_COLOR_RENDERING,
         qualityColorRenderingBox.isSelected()
            ? RenderingHints.VALUE_COLOR_RENDER_QUALITY
            : RenderingHints.VALUE_COLOR_RENDER_SPEED);
      canvas.setRenderingHints(hints);
   }

   private RenderQualityPanel canvas;
   private JCheckBox antiAliasingBox;
   private JCheckBox qualityRenderingBox;
   private JCheckBox ditheringBox;
   private JCheckBox textAntiAliasingBox;
   private JCheckBox fractionalMetricsBox;
   private JCheckBox qualityAlphaInterpolationBox;
   private JCheckBox qualityColorRenderingBox;
   private Box checkBoxContainer;
}

class RenderQualityPanel extends JPanel
{  public RenderQualityPanel()
   {  Random generator = new Random();
      color1 = new Color(0.7F, 0.7F, 0.0F, 0.5F);
      color2 = new Color(0.0F, 0.3F, 0.3F, 0.5F);
      image = Toolkit.getDefaultToolkit().getImage
         ("clouds.jpg");
      MediaTracker tracker = new MediaTracker(this);
      tracker.addImage(image, 0);
      try { tracker.waitForID(0); }
      catch (InterruptedException e) {}
   }

   public void paintComponent(Graphics g)
   {  super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      g2.setRenderingHints(hints);

      g2.drawImage(image, 0, 0, null);
      g2.draw(new Ellipse2D.Double(0, 0,
         image.getWidth(null), image.getHeight(null)));
      g2.setFont(new Font("Serif", Font.ITALIC, 40));
      g2.drawString("Hello", 75, 75);
      g2.setPaint(color1);
      g2.translate(0,-80);
      g2.fill(new Rectangle2D.Double(100, 100, 200, 100));
      g2.setPaint(color2);
      g2.fill(new Rectangle2D.Double(120, 120, 200, 100));
   }

   public void setRenderingHints(RenderingHints h)
   {  hints = h;
      repaint();
   }

   private RenderingHints hints = new RenderingHints(null);
   private Color color1;
   private Color color2;
   private Image image;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -