package itheima006; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; public class bufferedimageDemo { public static void main(String[] args) { new bufferedimageDemo().init(); } private int prex = -1; private int prey = -1; Frame frame = new Frame("位图的使用"); private int CANVAS_WIDTH = 400; private int CANVAS_HEIGH = 500; private PopupMenu pop = new PopupMenu(); private MenuItem menui1 = new MenuItem("红色"); private MenuItem menui2 = new MenuItem("蓝色"); private MenuItem menui3 = new MenuItem("黑色"); private Color color=Color.CYAN; //使用位图//图片类型三原色 BufferedImage buimage = new BufferedImage(CANVAS_WIDTH, CANVAS_WIDTH, BufferedImage.TYPE_INT_RGB); Graphics gg = buimage.getGraphics();//获取画笔 //创建画布 private class Mycanvas extends Canvas { @Override public void paint(Graphics g) { boolean b = g.drawImage(buimage, 0, 0, null); } } Mycanvas mycanvas = new Mycanvas(); private void init() { //组件视图 ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand();//获取点击的字符串内容 switch (command) { case "红色": color = Color.red; break; case "蓝色": color = Color.blue; break; case "黑色": color = Color.black; break; } } }; mycanvas.addMouseListener(new MouseAdapter() { @Override//鼠标按键释放 public void mouseReleased(MouseEvent e) { boolean popupTrigger = e.isPopupTrigger(); if (popupTrigger) { pop.show(mycanvas, e.getX(), e.getY()); } prex = -1; prey = -1; } }); //设置位图背景为白色 gg.setColor(Color.white); gg.fillRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGH); mycanvas.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { if (prex != -1 && prey != -1) { gg.setColor(color); gg.drawLine(prex, prey, e.getX(), e.getY()); } prex = e.getX(); prey = e.getY(); mycanvas.repaint(); } }); mycanvas.setPreferredSize(new Dimension(CANVAS_WIDTH,CANVAS_HEIGH)); frame.add(mycanvas); menui1.addActionListener(listener); menui2.addActionListener(listener); menui3.addActionListener(listener); pop.add(menui1); pop.add(menui2); pop.add(menui3); frame.add(pop); frame.pack(); frame.setVisible(true); } }