Java Wie zeichnet man eine wackelige Linie

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

unter Java kann man ja in einer Grafik mit
Code:
Grahics g;
g.drawLine(0, 0, 100, 100);
eine Linie zeichen.

Doch wie zeichne ich eine unsaubere Linie, die verwackelt ist? Ein Beispiel wäre dieses Bild:
%5BEin%20Kasten%5D


Danke vorab,
CPU :)
 
Du setzt eine "wacklige Linie" aus mehreren geraden Linien zusammen. Genau das ist auch in deinem Bild zu erkennen.
 
Ich habe mich nicht deutlich genug ausgedrückt, sry ...
:)
Mir ist klar, dass man das mit mehreren Linien macht, doch die Theorie dahinter ist mir nicht klar ...
 
Würde aber drawPolygon statt drawLine nehmen. Ansonsten gibts in Java noch AffineTransform zum Manipulieren von Grafiken, aber das ist nicht trivial. Dazu müsstest du einen Teil der Grafik "rausholen" und z.B. eine Rotation ausführen mit AffineTransform, danach den Teil wieder ins Gesamtbild einfügen. Viel leichter ist es ein paar Kästen aus Polygonen zu basteln. Die kann man, wenn man denn will, auch mit AffineTransform rotieren bzw. spiegeln und so noch Variationen des gleichen Grundobjekts zu erhalten.

Zum Schluss das Bild noch mit Anti-Aliasing rendern lassen.

Siehe:
 
Zuletzt bearbeitet:
Na, entweder du legst das vorher fest oder machst eine zufällige Abweichung rein. Sorry, ich kann kein Java aber im Prinzip:
Code:
höhe = 50
breite = 100

// Seite oben
abweichung = random(0 - 10)
g.DrawLine(0, 0, breite / 2, abweichung)
g.DrawLine(breite / 2, abweichung, breite, 0)

// Seite rechts
abweichung = random(0 - 10)
g.DrawLine(breite, 0, breite - abweichung, höhe / 2)
g.DrawLine(breite - abweichung, höhe / 2, breite, höhe)

// usw...
Ausgehend davon, dass das Koordinatensystem von oben links nach rechts unten geht und Graphics.DrawLine die Argumnte x1, y1, x2, y2 hat.

/edit: oder nach gleichem Prinzip mit DrawPolygon, dann eben erst ein Array mit den Punkten füllen.
Und du kannst natürlich auch noch die Eckpunkte variieren, in diesem Beispiel wird einfach der Mittelpunkt der Seiten zufällig verschoben.
 
Ich hab's ausprobiert und es hat wunderbar funktioniert ... :D

Wer jetzt denkt "Das hätte der sich ja auch selbst denken können", der hat Recht - ich habe mir auch soetwas gedacht. Ich habe aber gedacht, dass vielleicht jemand noch eine elegantere Lösung hat ... hätte ja sein können ...

Danke,
CPU :)
 
Zurück
Oben