Linien, Recktecke und Elipsen zeichnen ohne Image

Status
Nicht offen für weitere Antworten.
L

Lafkaschar

Gast
Also erst mal Hallo, ich bin neu hier.

Ich bastel gerade an einer art Malprogramm (um genau zu sein ein Programm zum erstellen von schriftarten für mikrocontrollersysteme)

Nun hab ich folgendes Problem:

Ich möchte auch Linien Kreise(Elipsen) und Rechtecke zeichnen können. Erst mal ja eigentlich kein Problem. Nur ist jetzt das Problem, dass ich nicht auf einem Image zeiche sondern auf einem zweidimensionalen Array von Farben.
Das zwinge ich mir auf, weil ein Pixel zwischen 5 und 50 Pixeln auf dem Monitor groß sein kann (je nach zoom).
Wenn ich auf einem Image Objekt zeichnen würde und das dann in mein Array kopieren würde, würde mich das viel zeit kosten, und das ganze läfut dann nicht mehr wirklich flüssig.

Deswegen suche ich einen Algorithmus, der mir nur die Pixel, die ich setzen muss zurückliefert, so könnte ich viel Zeit sparen, da nicht alle Pixel durchlaufen werden müssen. Kennt jemand einen geeigneten Algorithmus?

Ich hoffe mir kann wer helfen,
Vielen Dank! :))
 

Ark

Top Contributor
Hm, es gibt immer so etwas wie einen Minimalaufwand, den musst Du halt finden. Vielleicht findest Du irgendwo in den Quelltexten Anregungen, suche da mal nach Klassen, die Graphics erweitern. (Ich weiß nicht, ob die drin stehen.) Die Codes sind, wie ich festgestellt habe, nicht immer optimal, aber sie funktionieren.

Ansonsten gibt es da verschiedene Möglichkeiten. Prinzipiell reicht es z. B. für einen Kreis, wenn man pi/4 von ihm zeichnen kann (z. B. mittels Kreisgleichung ermitteln, welche Punkte zutreffen), den Rest erhält man durch geschicktes Spiegeln.

Aber ich muss sagen, das ist eine sehr interessante Programmieraufgabe. ;)

MfG
Ark
 
L

Lafkaschar

Gast
Also in Graphics steht nix drin das hab ich schon geguckt :( da steht einfach nur
<code>
/**
* Draws a line, using the current color, between the points
* <code>(x1,&y1)</code> and <code>(x2,&y2)</code>
* in this graphics context's coordinate system.
* @param x1 the first point's x coordinate.
* @param y1 the first point's y coordinate.
* @param x2 the second point's x coordinate.
* @param y2 the second point's y coordinate.
*/
public abstract void drawLine(int x1, int y1, int x2, int y2);

</code>

Was mich schon n bisschen verwirrt hat. Anscheinend zeichnet Java seine Linien und kreise nicht selbst, sondern überlässt das dem Betriebssystem.

Ich hab mit dem netten Forumuser "meissner" im chat bereits einen Linienalgorithmus ausgearbeitet, bzw wir ham erst ne ganze weile uns selbst einen ausgedacht, bis wir auf den Bresenham-Algorithmus gestoßen sind, den wir dann auch benutzt haben, und ich muss sagen er funktinoiert wirklich gut.

Das Problem ist nur, ich hab durch den algorithmus noch nich ganz durchgeblickt :>

Bei wikipedia findet man nen artikel über den Algorithmus, dort steht auch, wie man ihn auf kreise/elipsen erweitern kann. Nur dazu muss ich erst mal durchsteigen ^^
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben