0

背景画像を Java awt キャンバスに追加しようとしていますが、まだうまくいきません。この問題の解決策、またはこの問題のコードを誰かが持つことができますか。コードを以下に示します。

ありがとう。

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 に答える