eraser.java

来自「windows画图板.类似于windows自带的画图程序!」· Java 代码 · 共 67 行

JAVA
67
字号
import java.awt.*;
import javax.swing.JComponent;

/**
 *
 * @author hysun
 */
public class Eraser extends FreeShape {
    
    private JComponent board;
    
    public Eraser(JComponent board, Stroke s, int x, int y) {
        super(null, s, x, y);
        this.board = board;
    }
    
    public Eraser(JComponent board) {
        this.board = board;
    }
    
    public void draw(Graphics2D g) {
        g.setColor(board.getBackground());
        g.setStroke(stroke);
        int[][] points = pointsSet.getPoints();
        if (points == null)
            return;
        int s = points[0].length;
        if (s == 1) {
            int x = points[0][0];
            int y = points[1][0];
            g.drawLine(x, y, x, y);
        } else {
            g.drawPolyline(points[0], points[1], s);
        }
    }
    
    public String getShapeData() {
        int si = 0;
        for (int i=0; i<DrawingBoard.ERASER_STROKES.length; i++) {
            if (stroke == DrawingBoard.ERASER_STROKES[i]) {
                si = i;
                break;
            }
        }
        StringBuffer buffer = new StringBuffer();
        buffer.append(si);
        int[][] ps = pointsSet.getPoints();
        for (int i=0; i<ps[0].length; i++) {
            buffer.append(":");
            buffer.append(ps[0][i]);
            buffer.append(":");
            buffer.append(ps[1][i]);
        }
        return buffer.toString();
    }
    
    public void setShapeData(String data) throws Exception {
        String splits[] = data.split(":");
        stroke = DrawingBoard.ERASER_STROKES[Integer.parseInt(splits[0])];
        for (int i=1; i<splits.length; i+=2) {
            pointsSet.addPoint(Integer.parseInt(splits[i]),
                    Integer.parseInt(splits[i+1]));
        }
    }
    
}

⌨️ 快捷键说明

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