美文网首页
AWT对处理位图

AWT对处理位图

作者: 开心的小哈 | 来源:发表于2021-11-21 21:20 被阅读0次
package com.main;

import javax.swing.*;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

public class MassageDialogDeom {

private final int AREA_WIDTH=500;
private final int AREA_HEIGHT=400;
    BufferedImage bufferedImage=null;
    private MyCanvas myCanvas=new MyCanvas();
    int preX=-1;
    int prey=-1;
private Color forceColor=Color.red;
    public void init(){
        Frame simple_mapping = new Frame("simple mapping");

        PopupMenu popupMenu = new PopupMenu();
        MenuItem red = new MenuItem("red");
        MenuItem green = new MenuItem("green");
        MenuItem blue = new MenuItem("blue");

        bufferedImage= new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_BGR);
        //定义变量,记录鼠标上一次所处的坐标

        //通过位图获取Graphics
        Graphics graphics = bufferedImage.getGraphics();
        graphics.setColor(Color.WHITE);
        graphics.fillRect(0,0,AREA_WIDTH,AREA_HEIGHT);

        myCanvas.addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {//鼠标按下并拖动时会被调用
                System.out.println("---"+e.getX()+"y"+e.getY());
                if(preX>0&&prey>0){
                    graphics.setColor(forceColor);
                    //画线条
                    graphics.drawLine(preX,prey,e.getX(),e.getY());
                    myCanvas.repaint();
                }
                preX=e.getX();
                prey=e.getY();
              
            }
        });
        //通过监听鼠标的移动,完成线条绘制

        //自定义一个类继承Canvas

        ActionListener actionListener=new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = e.getActionCommand();
                switch (actionCommand){
                    case "red":
                        forceColor=Color.red;
                        break;
                    case "green":
                        forceColor=Color.green;
                        break;
                        case "blue":
                        forceColor=Color.blue;
                        break;
                }
            }
        };
        red.addActionListener(actionListener);
        green.addActionListener(actionListener);
        blue.addActionListener(actionListener);
        popupMenu.add(red);
        popupMenu.add(green);
        popupMenu.add(blue);
        //把colormenu设置给绘图区域
        myCanvas.add(popupMenu);
        myCanvas.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                //当鼠标键抬起调用
                boolean popupTrigger = e.isPopupTrigger();
                if(popupTrigger){
                    popupMenu.show(myCanvas,e.getX(),e.getY());
                }
                preX=-1;
                prey=-1;
            }
        });
        myCanvas.setPreferredSize(new Dimension(AREA_WIDTH,AREA_HEIGHT));
        simple_mapping.add(myCanvas);
        simple_mapping.pack();
        simple_mapping.setVisible(true);

    }
    private class MyCanvas extends Canvas{
        @Override
        public void paint(Graphics g) {
            g.drawImage(bufferedImage,0,0,null);
        }
    }
    public static void main(String[] args) {
        new MassageDialogDeom().init();

    }
}

image.png

相关文章

  • AWT对处理位图

  • AWT 事件处理模型

    要让图形界面能够接收用户的操作,就必须给各个组件加上事件处理机制。 在事件处理的过程中,主要涉及三大对象: Eve...

  • Java 2D shapes demo

    importjava.awt.*; importjava.awt.event.*; importjava.awt....

  • Android图像处理

    图像色彩处理 Android对图片的处理,通常用到的数据结构就是位图—Bitmap,它包含了一张图片的所有数据。整...

  • Android位图

    处理位图:https://developer.android.com/topic/performance/grap...

  • 一个处理位图拉伸变形的VC小程序源码

    一个处理位图拉伸变形的VC小程序源码,可以学习下VC++位图拉伸与背景叠加方面的应用示例。没有背景显示,以位图作为...

  • swing和awt

    关于AWT和Swing说法正确的是? Swing是AWT的子类 AWT在不同操作系统中显示相同的风格 AWT不支持...

  • 初识PS

    一、认识软件(Adobe) 美国Adobe(奥多比)公司开发 1.PS:位图的处理软件 位图:图片缩小拉大之后图像...

  • 抖动处理

    抖动处理,需要先将位图转成黑白的再做处理 uint32_t *pixels =bitmapData; intgra...

  • JAVA 记事本的实现

    import java.awt.BorderLayout; import java.awt.Dimension; ...

网友评论

      本文标题:AWT对处理位图

      本文链接:https://www.haomeiwen.com/subject/yokftrtx.html