Hat dir diese Antwort geholfen?
Ich würde dazu einfach so vorgehen:
1. Die Grafik in kleine Bestandteile zerlegen. Hier künnte man z.B. dieses "V" mit dem Quadrat unten dran nehmen; also das Quadrat mit jeweils einer Linie schräg nach oben links und oben rechts.
2. Die Koordinaten überlegen, du hast da ja schon einen "Grundabstand" von 25px in die Grafik geschrieben. Der zu zeichnende Grafikbestandteil ist also immer 75x50px groß, danach kommt 25x50px nichts und dann wieder von vorne usw.. Das ganze für jede Zeile bis die Fläche voll ist. Innerhalb des Fragments musst du dann ein Quadrat (25, 25, 50, 50) und zwei Linien (0, 0, 25, 25) und (50, 25, 75, 0) malen.
3. Eine Schleife überlegen, die das für dich übernimmt.
// Platzhalter für die wirkliche Breite der Zeichenfläche,
// die musst du natürlich irgendwie rauskriegen
final int WIDTH = 525;
// und hier die Höhe
final int HEIGHT = 250;
public void paint( Graphics g ) {
// Größe der Teilgrafik
final int myShapeWidth = 75;
final int myShapeHeight = 50;
//aktuelle Koordinaten
int x = 0;
int y = 0;
while( HEIGHT - y - myShapeHeight >= 0 ) { //solange noch Platz für eine weitere Reihe ist
// Einrückung um 50px für jede 2. Zeile:
if( y % 100 == 0 ) x = 0;
else x = 50;
while( WIDTH - x - myShapeWidth >= 0 ) { //und Platz für eine "Zeile"...
drawMyShape( g, x, y );
x += 100; //75 Breite + 25 "Pause"
}
y += 50; //Höhe
}
}
void drawMyShape( Graphics g, int x, int y ) {
// x und y geben den Offset an, d.h. den oberen linken Punkt der Teilgrafik.
// Die Zahlen sind genau die in Schritt 2 überlegten.
g.fillRect( x+25, y+25, 25, 25 );
g.drawLine( x+0, y+0, x+25, y+25 );
g.drawLine( x+50, y+25, x+75, y+0 );
}
Hoffe, dass das funktioniert und auch halbwegs verständlich ist. Und drei Zeichenbefehle sind ziemlich wenig oder?