位图,在画布中画线

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);

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值