我正在尝试向 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;
}
}
这是一个绘图画布。默认背景颜色为白色..我希望将其更改为图像...?