cliptest.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 101 行

JAVA
101
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.geom.*; 
     import java.awt.event.*;
          
     public class ClipTest extends Applet implements ItemListener
     {  
          // 要绘制的Image和剪裁区域
          private Image image;
          private Polygon clip;

          // 显示Image和剪裁区域的Choice
          private Choice dropBox; 
       
          // 下拉框中的索引
          private final int SHOW_IMAGE_ONLY    = 0;
          private final int SHOW_CLIP_ONLY     = 1;
          private final int SHOW_CLIPPED_IMAGE = 2;

          public void init()
          {
               // 从文件中加载图像
               MediaTracker mt = new MediaTracker(this);
               image = getImage(getCodeBase(), "blabber.gif");
               mt.addImage(image, 0);
               try
               {     mt.waitForID(0);
               }
               catch(InterruptedException e) { /* 什么也不做*/ }
               
               // 相对参照点创建一个八边形的剪裁区域
               // 参照点可以位于图像中心

               clip = new Polygon();
               int anchor = image.getWidth(this)/2;
               for(int i = 0; i < 8; i++)
               {
                    clip.addPoint(anchor+(int)(anchor*Math.cos(Math.toRadians(i*45))),  
                                  anchor+(int)(anchor*Math.sin(Math.toRadians(i*45))));
               }               

               // 把下拉框添加到容器的底部,和三个绘制选项在一起
               setLayout(new BorderLayout());
               dropBox = new Choice();
               dropBox.add("Show Image");
               dropBox.add("Show Clip Region");
               dropBox.add("Show Clipped Image");
               dropBox.addItemListener(this);
               add(dropBox, BorderLayout.SOUTH);
          }

          public void paint(Graphics g)
          {
               // 把传进来的Graphics容器转化为一个可用的Graphics2D对象
               Graphics2D g2d = (Graphics2D)g;

               // 把变换设置为恒等变换
               final AffineTransform at = new AffineTransform();

               // 根据当前的选择来绘制
               switch(dropBox.getSelectedIndex())
               {
                    case SHOW_IMAGE_ONLY:
                    {
                         // 只绘制图像
                         g2d.drawImage(image, at, this);
                         break;
                    }
                     
                    case SHOW_CLIP_ONLY:
                    {
                         // 只绘制剪裁区域
                         g2d.setTransform(at);
                         g2d.draw(clip);
                         break;
                    }
                     
                    case SHOW_CLIPPED_IMAGE:
                    {
                         // 根据剪裁区域来绘制图像
                         g2d.setClip(clip);
                         g2d.drawImage(image, at, this);
                         break;
                    }
                    
                    default:
                    {    
                          // 无效索引
                          System.out.println("Invalid Choice: " + dropBox.getSelectedIndex());
                          break;
                    }
               }
          }
      
          public void itemStateChanged(ItemEvent e)
          {
               // 下拉框已经改变--重绘画面
               repaint();
          }

     }    // ClipTest

⌨️ 快捷键说明

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