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 + -
显示快捷键?