2D-Grafik "Unvollständiger" Kreis(kontur)

melatonin

Mitglied
Hallo,
ich würde gerne einen "unvollständigen" Kreis(kontur) zeichnen. Ein Beispiel habe ich als angehangen.
Ich könnte Pixel für Pixel zeichnen oder das unnötige mit der Hintergrundfarbe übermalen.
Später möchte ich dann die Möglichkeit haben, über eine Methode zu bestimmen, wie weit der Kreis gemalt wird.

Mir geht es hierbei um eine ressourcenschonende Variante. Leider bietet Graphics da keine std. Lösung.

Was fällt euch ein, was wäre eine gute Lösung?

Vielen Dank und Gruss
 

Anhänge

  • kreis.png
    kreis.png
    1,2 KB · Aufrufe: 69
wenn es dir um den Tortenausschnitt geht, dann haben die Kreis-Methoden doch Winkel-Angaben?
der Ring ist auch mit drawArc statt fillArc und bestimmte Liniendichte usw. zu machen, was hast du denn bisher verwendet?

ansonsten vielleicht auch fillArc + fillArc mit etwas kleinerern Radius in Hintergrundfarbe, also Übermalen wie du sagst

Java Tips - How to draw Arc on a Canvas
 
Er zieht dann aber direkt eine Linie von Start bis Ende. Siehe Anhang.
Irgendwie finde ich es unsauber, wenn man zuerst was zeichnet um es dann teilweise wieder zu überzeichnen.
 

Anhänge

  • fail.png
    fail.png
    405 Bytes · Aufrufe: 55
bei mir nicht:

g.fillArc(100,100,100,100,0,270);
g.drawArc(220,100,100,100,0,270);

poste doch Code.. (ich habe die Ausrede dass ich dir nicht umsonst ein komplettes Programm liefern will)
 

Anhänge

  • screen1.png
    screen1.png
    5,4 KB · Aufrufe: 38
@SlaterB
Ich muss dazu sagen, dass ich für Android entwickel:
Canvas | Android Developers, float, float, boolean, android.graphics.Paint)

Mit Graphics habe ich es nicht getestet. Ich bin davon ausgegangen, dass sich das Äquivalent zu Graphics bei Android genauso verhält. Vor allem bei gleichem Methodennamen 🙁

@Marco13 Danke werde ich mir mal genauer anschauen.

Ich habs hinbekommen. useCenter war der Übeltäter 😉 Wer lesen kann, ist klar im Vorteil.
Aber nochmal zur Frage der sauberen Lösung. Ist das echt die "gute" Lösung, indem man es dann mit dem bg übermalt?
 
Zuletzt bearbeitet:
Das kommt auf die Kriterien an. Spätestens, wenn im "inneren" schon irgendwas gezeichnet ist, und man das Segment nur "drüberzeichnen" will, kommt man mit einem nachträglichen Füllen des Hintergrundes nicht weit. Aber ansonsten ist das wohl schon legitim...
 
Ich frage mich halt, wann der Overhead eine eigene Routine, die wirklich nur das zeichnet was benötigt wird, rechtfertigt. Hat vielleicht jemand schonmal beide Sachen probiert und da irgendwelche Zahlen ermittelt, wie schnell beide Varianten waren.

Ich könnte mir sogar vorstellen, dass eine eigene Routine viel langsamer sein kann. z. B. wenn man Pixel für Pixel zeichnen würde.
 
Das ist schwer zu sagen, und könnte sich sogar zwischen verschiedenen JVM-Versionen, Betriebssystemen und ggf. sogar verschiedenen Grafikkarten und Treibern unterscheiden. Wenn man z.B. sowas wie
Code:
 __________
|          |
|   _______|
|  |
|  |
|  |
|  |_______
|__________|
zeichnen wollte, dann wäre es sicher aufwändiger, das als EIN Polygon zu füllen, als einmal das äußere Rechteck und dann das kleine, innere zu zeichnen (Rechtecke sind eben sehr einfach). Aber vermutlich dürfte da bei einem komplexeren Arc nicht so viel Unterschied sein.
 

Zurück
Oben