texturetest.java
来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 82 行
JAVA
82 行
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.awt.geom.*;
public class TextureTest extends Applet implements ActionListener
{
// 接受文件名的一个文本域
private TextField input;
public void init()
{
// 创建一个布局并添加文本域和一个"OK"按钮
setLayout(new BorderLayout());
Panel p = new Panel();
input = new TextField("", 20);
p.add(input);
Button ok = new Button("Ok");
ok.addActionListener(this);
p.add(ok);
add(p, BorderLayout.SOUTH);
}
public void paint(Graphics g)
{
// 把传入的Graphics容器转换为一个可用的 Graphics2D 对象
Graphics2D g2d = (Graphics2D)g;
// j绘制形状的外形,如果文本域只包含空格则返回
if("".equals(input.getText().trim()))
{
g2d.translate(112, 15);
g2d.rotate(Math.PI/4);
g2d.draw(new Rectangle2D.Double(0, 0, 104, 104));
return;
}
// 加载一个图像
// 当讨论动画时我们会谈到 MediaTracker 类
MediaTracker mt = new MediaTracker(this);
Image image = getImage(getCodeBase(), input.getText());
mt.addImage(image, 0);
try
{ mt.waitForAll();
}
catch(InterruptedException e) { /* 什么也不做 */ }
// 如果所创建图像的宽或者高<=0,则证明文件名可能是错的
if(image.getWidth(this) <= 0 || image.getHeight(this) <= 0)
{
// 打印错误信息并返回
input.setText(input.getText() + " : invalid filename.");
return;
}
// 用图像的宽和高创建一个新的BufferedImage
BufferedImage bi = new BufferedImage(
image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_RGB);
// 得到BufferedImage的Graphics2D 容器并把原先的图像绘制在它上面
((Graphics2D)bi.getGraphics()).drawImage(image, new AffineTransform(), this);
// 为绘制的图像创建和图像等大的定位矩形
Rectangle2D bounds = new Rectangle2D.Float(0, 0, bi.getWidth(), bi.getHeight());
// 设置paint
g2d.setPaint(new TexturePaint(bi, bounds));
// 变换并绘制!
g2d.translate(112, 15);
g2d.rotate(Math.PI/4);
g2d.fill(new Rectangle2D.Double(0, 0, 104, 104));
}
public void actionPerformed(ActionEvent e)
{
// "Ok" 按钮按下;更新变化
repaint();
}
} // TextureTest
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?