B
Blace
Gast
Hallo,
ich gehe momentan ein Online Java tutorial durch und bin nun auf ein Programmbeispiel gestoßen, was ich mir so
nicht erklären kann, was aber auch nicht weiter in dem Tutorial erläutert wird.
Es handelt sich um Folgenden Code (Quelle: http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/java/kurs/Grafik.html)
Hier wird ein Fenster mit einem Farbverlauf gefüllt.
Was dabei für mich so unklar ist, ist die Zeile: g.drawRect(i,i,w-1-2*i,h-1-2*i);
Warum wird hier das i mit 2 multipliziert? Ich habe es versucht weg zu lassen, was jedoch zu einer Fehlerhaften Darstellung des Bildes führte. Anscheinend habe ich hier einen Denkfehler aber ich bin selbst durch eine Skizzierung des Fensters mit Koordinaten nicht drauf gekommen warum hier das i mal 2 genommen werden muss.
Müsste für eine gleichmäßige Zeichnung der Quadrate die Zeile nicht: g.drawRect(i,i,w-1-i,h-1-i); lauten?
Danke schonmal für eure Antworten
Gruß
Blace
ich gehe momentan ein Online Java tutorial durch und bin nun auf ein Programmbeispiel gestoßen, was ich mir so
nicht erklären kann, was aber auch nicht weiter in dem Tutorial erläutert wird.
Es handelt sich um Folgenden Code (Quelle: http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/java/kurs/Grafik.html)
Code:
import javax.swing.*;
import java.awt.*;
class TestCanvas extends Canvas
{ public void paint (Graphics g)
{ Dimension d=getSize();
int w=d.width,h=d.height;
int i=0;
Color C;
while (i<=w-1-i && i<=h-1-i)
{ // Beschaffe neue Farbe:
if (2*i<256) C=new Color(2*i,255-2*i,255);
else C=new Color(255,0,255);
g.setColor(C); // setze Farbe
g.drawRect(i,i,w-1-2*i,h-1-2*i);
i++;
}
}
}
public class RingBuffer
{ public static void main (String args[])
{ JFrame F=new JFrame();
F.setTitle("Test");
F.setSize(300,300);
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.add(new TestCanvas());
F.setVisible(true);
}
}
Hier wird ein Fenster mit einem Farbverlauf gefüllt.
Was dabei für mich so unklar ist, ist die Zeile: g.drawRect(i,i,w-1-2*i,h-1-2*i);
Warum wird hier das i mit 2 multipliziert? Ich habe es versucht weg zu lassen, was jedoch zu einer Fehlerhaften Darstellung des Bildes führte. Anscheinend habe ich hier einen Denkfehler aber ich bin selbst durch eine Skizzierung des Fensters mit Koordinaten nicht drauf gekommen warum hier das i mal 2 genommen werden muss.
Müsste für eine gleichmäßige Zeichnung der Quadrate die Zeile nicht: g.drawRect(i,i,w-1-i,h-1-i); lauten?
Danke schonmal für eure Antworten
Gruß
Blace