⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jadvlabel.java

📁 一个Java图形图像处理编辑器的源代码,常见的图片处理效果里面都实现了
💻 JAVA
字号:
package PictureDrawer;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.Icon;

import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.event.MouseMotionListener;



/**
 * 对JLabel类进行了扩展,提供了一些图像处理功能
 */
public class JAdvLabel extends JLabel implements MouseMotionListener{
    
    /**
     * 放大镜的宽度和高度
     */
    private static final int MAGINIFIER_W_H = 60;
    
    /**
     * RGB格式的buffered_image
     */
    BufferedImage buffered_image;
    
    /**
     * ARGB格式的buffered_image
     */
    BufferedImage abuffered_image;
    
    /**
     * 当前图像的ImageIcon
     */
    ImageIcon image_icon;
    
    /**
     * 当前文件的文件名
     */
    String filename;
    
    /**
     * 当前图像的宽度和高度
     */
    int width, height;

    /**
     * 当前放大镜的起始坐标
     */
    private int magX, magY;

    /**
     * 是否显示放大镜的标志。
     */
    private boolean showMagnifier = false;
    
    /**
     * 构造函数
     * <p>
     * @param filename 要打开的文件的名字和路径
     */ 
    public JAdvLabel(String filename) {
        this.filename = filename;
        setImageIcon(new ImageIcon(filename));
        addMouseMotionListener(this);
    }
    
    /**
     * 缺省的构造函数,和父类JLabel相同
     */
    public JAdvLabel() {
    	super();
        addMouseMotionListener(this);
    }	
    
    /**
     * 设置当前显示的ImageIcon
     * <p>
     * @param icon 要被显示的ImageIcon,
     * 这里是对父类的setIcon函数功能进行了扩展
     * 通过本方法,可以设置ImageIcon。
     */
    public void setImageIcon(ImageIcon icon) {
    	image_icon = icon;
        width = icon.getIconWidth();
        height = icon.getIconHeight();
        buffered_image = new BufferedImage(width, height, 
                                BufferedImage.TYPE_INT_RGB);
        buffered_image.createGraphics().drawImage(
                                image_icon.getImage(),0,0,null);
        abuffered_image = new BufferedImage(width, height, 
                                BufferedImage.TYPE_INT_ARGB);
        abuffered_image.createGraphics().drawImage(
                                image_icon.getImage(),0,0,null);
                                
        setIcon((Icon)icon);
    }
    
    /**
     * 当放大镜标志为true时,绘制放大镜以及放大内容
     */
    public void paint(Graphics g){
        super.paint(g);
        if (showMagnifier) {
            g.setColor(Color.RED.darker());
            //绘制边框
            g.drawRect(magX,magY, MAGINIFIER_W_H+2,MAGINIFIER_W_H+2);
            //绘制放大图像,放大图像以鼠标当前位置为中心
            int sx1 = magX - MAGINIFIER_W_H/4;
            int sy1 = magY - MAGINIFIER_W_H/4;
            int sx2 = sx1 + MAGINIFIER_W_H/2;
            int sy2 = sy1 + MAGINIFIER_W_H/2;
            if (sx1<0) {
                sx1=0;
                sx2=MAGINIFIER_W_H/2;
            }
                
            if (sy1<0) {
                sy1=0;
                sy2=MAGINIFIER_W_H/2;
            }
            g.drawImage(buffered_image,
                        magX+1,magY+1,
                        magX+MAGINIFIER_W_H+2,magY+MAGINIFIER_W_H+2,
                        //源图像的位置
                        sx1,sy1,sx2,sy2,null);
        }
    }
    
    /**
     * 设置显示或者隐藏放大镜
     * <p>
     * @parma show 是否显示放大镜,当为true时显示,否则不显示。
     */
    public void showMagnifier(boolean show) {
        showMagnifier = show;
        repaint();
    }
    
     /**
      * 返回是否显示放大镜
      * <p>
      * @return showMagnifier 返回是否显示放大镜标志。
      */
     public boolean isShowMagnifier() {
        return showMagnifier;
     }
    
     public void mouseDragged(java.awt.event.MouseEvent e) {
     }

    /**
     *处理鼠标事件,移动放大镜。
     */
     public void mouseMoved(java.awt.event.MouseEvent e) {
        if ((showMagnifier) && 
            (e.getX()<=width) &&
            (e.getY()<=height)){
            magX = e.getX();
            magY = e.getY();
            repaint();
        }         
     }
     
     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -