applet1.java
来自「矩阵乘法的计算程序」· Java 代码 · 共 82 行
JAVA
82 行
import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.awt.event.*;
/**
* This class reads PARAM tags from its HTML host page and sets
* the color and label properties of the applet. Program execution
* begins with the init() method.
*/
public class Applet1 extends Applet implements MouseListener
{
Image img;
Image newImg;
int x1,y1,w,h,count=1;
public void init()
{
img=getImage(getDocumentBase(),"bg.jpg");
newImg=img;
this.addMouseListener(this);
}
public void paint(Graphics g){
int w=newImg.getWidth(this);//this 为图像观测者
int h=newImg.getHeight(this);
Dimension d=getSize();
if(w>d.width ) w=d.width;
if(h>d.height) h=d.height ;
//g.drawImage(newImg,0,0,this);
g.drawImage(newImg,(d.width-w)/2,(d.height-h)/2,this);//居中显示,但有误差
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
int x,y;
Graphics g=getGraphics();
x=e.getX();
y=e.getY();
if (count==1){
x1=x;y1=y;count=2;//得到要截取区域的左上角坐标
g.drawLine(x-5,y,x+5,y);
g.drawLine(x,y-5,x,y+5);
}else if(count==2){
count=3;
if(x1>x)w=x1-x;//得到要截取区域的宽度与高度
else w=x-x1;
if(y1>y) h=y1-y;
else h=y-y1;
newImg=crop();
repaint();
}else{
count=1;
newImg=img;
repaint();
}
g.drawString("x1="+x,10,10);
}
public void mouseReleased(MouseEvent e){
Graphics g=getGraphics();
g.drawString("x2="+e.getX(),28,28);
}
Image crop(){
Dimension d=getSize();
ImageFilter filter=new CropImageFilter(x1,y1,w,h);//截取时是按照图像的坐标
ImageProducer producer =new FilteredImageSource(img.getSource(),filter);
return createImage(producer);
// return createImage(img.getSource());
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?