Hallo,
ich versuche, ein Bild zu laden und dieses auf einem Canvas-Objekt zu zeichnen.
Leider funktioniert das nicht. In der paint-Methode zeichnet das Programm brav alle Linien, aber die
g.drawImage Methode zeichnet nichts.
Bei System.out.println((myImage == null)); wird falsch ausgegeben. D. h. also, dass das Bild eigentlich geladen sein sollte, oder?
Vielen Dank für Tipps.
mfg
System.exit(0)
ich versuche, ein Bild zu laden und dieses auf einem Canvas-Objekt zu zeichnen.
Leider funktioniert das nicht. In der paint-Methode zeichnet das Programm brav alle Linien, aber die
g.drawImage Methode zeichnet nichts.
Bei System.out.println((myImage == null)); wird falsch ausgegeben. D. h. also, dass das Bild eigentlich geladen sein sollte, oder?
Code:
class clsCanvas extends Canvas
{
private int Breite, Hoehe;
private int x1, x2, y1, y2;
private int EinzusetztendeZahl;
private Image myImage;
clsCanvas(int WIDTH, int HEIGHT, Color myColor)
{
this.setSize(WIDTH,HEIGHT);
this.setBackground(myColor);
this.setVisible(true);
Breite = WIDTH;
Hoehe = HEIGHT;
addMouseListener (new MouseListener() {
public void mouseClicked(MouseEvent e) {
System.out.println(e.getX());
System.out.println(e.getY());
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
// Bilder laden
myImage = Toolkit.getDefaultToolkit().getImage("Bild_0.jpg");
}
public void paint(Graphics g)
{
// Rahmen des Sudoku-Feldes
x1 = 100;
y1 = 5;
x2 = Breite - 100;
y2 = Hoehe - 5;
// Rechteck mit dreifacher Stärke zeichnen
for (int i = 0 ; i < 3 ; i++)
{
g.drawRect(x1 - i, y1 - i, x2 - x1 + 2 * i , y2 - y1 + 2 * i );
}
// Gitternetz zeichnen, Unterteilung in Quadrate mit 3-fach-Linien
double Intervall;
Intervall = (Breite - 200)/9;
for (int pos, i = 1; i<9; i++)
{
pos = (int) (i * Intervall);
g.drawLine(pos + 100, y1, pos + 100 , y2);
g.drawLine(x1, pos + 5, x2, pos + 5);
if ((i==3) || (i==6))
{
g.drawLine(pos + 99, y1, pos + 99 , y2);
g.drawLine(pos + 101, y1, pos + 101 , y2);
g.drawLine(x1, pos + 4, x2, pos + 4);
g.drawLine(x1, pos + 6, x2, pos + 6);
}
}
// Hier passiert nichts.
g.drawImage(myImage, 150, 150, this);
// Ausgabe: "falsch"
System.out.println((myImage == null));
}
Vielen Dank für Tipps.
mfg
System.exit(0)