📄 drawpane.java
字号:
package jtransformdemo;import java.awt.*;import javax.swing.JPanel;import java.awt.image.*;import java.awt.color.*;import java.awt.geom.*;public class DrawPane extends JPanel { private BorderLayout borderLayout1 = new BorderLayout(); Image image; BufferedImage bimage; BufferedImage bimageSrc; BufferedImage bimageDest; Graphics2D g2D; AffineTransform transform = new AffineTransform(); double scaleX = 1.0; double scaleY = 1.0; public DrawPane() { try { jbInit(); } catch(Exception ex) { ex.printStackTrace(); } } void jbInit() throws Exception { this.setLayout(borderLayout1); loadImage(); createBufferedImage(); bimage = bimageSrc; this.setSize(image.getWidth(this),image.getHeight(this)); } public void loadImage(){ //image = Toolkit.getDefaultToolkit().createImage("images/image.jpg"); // System.out.println(ClassLoader.getSystemResource("images/image.jpg")); image = this.getToolkit().createImage(ClassLoader.getSystemResource("images/image.jpg")); MediaTracker mt = new MediaTracker(this); mt.addImage(image,0); try{ mt.waitForAll(); }catch(Exception err){ System.err.println("Could not load the image."); } if (image.getWidth(this) == -1){ System.err.println("Could not get the image."); System.exit(1); } } public void createBufferedImage(){ bimageSrc = new BufferedImage(image.getWidth(this),image.getHeight(this), BufferedImage.TYPE_INT_ARGB); g2D = bimageSrc.createGraphics(); g2D.drawImage(image,0,0,this); bimageDest = new BufferedImage(image.getWidth(this),image.getHeight(this), BufferedImage.TYPE_INT_ARGB); } public void applyFilter(){ transform.setToScale(this.scaleX,this.scaleY); System.out.println("scale"+this.scaleX+" "+this.scaleY); AffineTransformOp ato = new AffineTransformOp(transform,null); bimageDest.createGraphics().clearRect(0,0,bimageDest.getWidth(this), bimageDest.getHeight(this)); ato.filter(bimageSrc,bimageDest); bimage = bimageDest; } public void reset(){ g2D.setColor(Color.black); g2D.clearRect(0,0,image.getWidth(this),image.getHeight(this)); g2D.drawImage(image,0,0,this); bimage = bimageSrc; } public void update(Graphics g){ g.clearRect(0,0,this.getWidth(),this.getHeight()); paintComponent(g); } public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.drawImage(bimage,0,0,this); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -