【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“ClipTest.java”一文,供大家参考学习
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