0

我正在尝试向 java awt canvas 添加背景图像,但仍然无法通过。任何机构都可以解决这个问题或解决这个问题的任何代码。代码如下,

谢谢。

import java.awt.*;
import java.applet.*;
import java.util.Vector;
import java.util.Enumeration;

public class DiagramEditor extends Canvas {

private Vector diagrams = new Vector(16);
Diagram currentDiagram;
DiagramEditorControls controls;
Tool tool;
Image offscreen;
public final static int RECTANGLE = 0;

public final static int SELECTION = 3;
public String toolNames[] = {"Rectangle", "", "", "Selection"};

public DiagramEditor() {
    setBackground(Color.white);
    newDiagram();
}

public void setControls(DiagramEditorControls c) {
    controls = c;
}

public void setTool(int t) {
    switch (t) {
        case RECTANGLE:
            tool = new WrectangleTool(currentDiagram);
            break;

        case SELECTION:
            tool = new SelectionTool(currentDiagram);
            break;
    }
    repaint();
    if (controls != null) {
        controls.toolChoice.select(t);
    }
}

public void paint(Graphics g) {
    update(g);
}

public void update(Graphics g) {
    Dimension canvasSize = size();
    if (offscreen == null) {
        offscreen = this.createImage(canvasSize.width, canvasSize.height);
    }
    Graphics og = offscreen.getGraphics();
    og.setColor(getBackground());
    og.fillRect(0, 0, canvasSize.width, canvasSize.height);
    og.setColor(Color.black);
    og.drawRect(0, 0, canvasSize.width - 1, canvasSize.height - 1);
    og.setColor(Color.blue);
    currentDiagram.draw(og);
    tool.draw(og);
    g.drawImage(offscreen, 0, 0, this);
}

public void deleteElements() {
    tool.delete();
    repaint();
}

public void nextDiagram() {
    if (currentDiagram == diagrams.lastElement()) {
        currentDiagram = (Diagram) diagrams.firstElement();
    } else {
        int diagramIndex = diagrams.indexOf(currentDiagram);
        currentDiagram = (Diagram) diagrams.elementAt(diagramIndex + 1);
    }
    setTool(RECTANGLE);
}

public void newDiagram() {
    currentDiagram = new Diagram();
    diagrams.addElement(currentDiagram);
    setTool(RECTANGLE);
}

public boolean mouseDown(Event e, int x, int y) {
    tool.press();
    repaint();
    return true;
}

public boolean mouseDrag(Event e, int x, int y) {
    tool.move(new Point(x, y));
    repaint();
    return true;
}

public boolean mouseMove(Event e, int x, int y) {
    tool.move(new Point(x, y));
    repaint();
    return true;
}

public boolean mouseUp(Event e, int x, int y) {
    tool.release();
    repaint();
    return true;
}
}

这是一个绘图画布。默认背景颜色为白色..我希望将其更改为图像...?

4

2 回答 2

1

下面的行:

offscreen = this.createImage(canvasSize.width, canvasSize.height);

应该变成这样:

try {
  offscreen = ImageIO.read(new File("path/to/image"));
} catch (IOException e) {
  e.printStackTrace();
}
于 2012-11-06T18:05:59.030 回答
0

你能不能只在画布上添加一个 JLabel,然后以这种方式添加背景图像?你用的是java编译器吗?

于 2012-11-06T17:49:56.867 回答