放图片 java_java怎么在我想要的图片上在放一个我想要的图片

展开全部

import javax.imageio.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import java.io.*;

import java.util.*;

/**

* @author Hardneedl

*/

final class PicDemo extends JFrame {

public String getTitle() {return "PicDemo";}

static private final Dimension size = new Dimension(600,400);

public Dimension getPreferredSize() {return size;}

public Dimension getMaximumSize() {return size;}

public Dimension getMinimumSize() {return size;}

public Dimension getSize(){return size;}

private interface Brush extends Observer{

void paint(Graphics g);

}

private class Canvas extends JComponent{

private Brush b;

private Observable observable=new Observable(){

public void notifyObservers(Object arg) {

setChanged();

super.notifyObservers(arg);

}

};

void setBrush(Brush b){

this.b=b;

observable.deleteObservers();

observable.addObserver(b);

if(isVisible())repaint();

}

private Canvas() {

addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e) {

observable.notifyObservers(e.getPoint());

repaint();

}

});

}

protected void paintComponent(Graphics g) {

super.paintComponent(g);

if(b!32313133353236313431303231363533e78988e69d8331333332623931=null)b.paint(g);

}

}

private class ImageBrush implements Brush{

private boolean drawTilEnabled;

private Image mainImg,til;

private Point p=new Point();

private void setTil(Image til) {this.til = til;}

private void setMainImg(Image mainImg) {this.mainImg = mainImg;}

public void paint(Graphics g) {

Graphics2D g2= (Graphics2D) g.create();

g2.drawImage(mainImg,0,0,null);

if(drawTilEnabled)

g2.drawImage(til, AffineTransform.getTranslateInstance(p.x-(til.getWidth(null)>>1), p.y-(til.getHeight(null)>>1)),null);

g2.dispose();

}

public void update(Observable o, Object arg) {

if(arg instanceof Point){

drawTilEnabled=true;

p.setLocation((Point) arg);

}

}

}

private Canvas canvas;

PicDemo() throws HeadlessException {

init();

attachListeners();

doLay();

}

private void init(){

canvas=new Canvas();

ImageBrush brush=new ImageBrush();

try {

brush.setMainImg(ImageIO.read(new File("b.png")));

brush.setTil(ImageIO.read(new File("unknown.png")));

} catch (IOException e) {

e.printStackTrace();

}

canvas.setBrush(brush);

}

private void attachListeners(){

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private void doLay(){

final Container container = getContentPane();

container.add(canvas,BorderLayout.CENTER);

pack();

setVisible(true);

}

public static void main(String...args) {

System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

SwingUtilities.invokeLater(

new Runnable(){

public void run() {

new PicDemo();

}

}

);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值