Eigene "Checkbox" erstellen


#21

Kennt jemand zufällig ein gutes Tutorial, wie das mit dem Path2D funktioniert? Ich versuche, die Pfeile aus @Marco13 s Beispielcode abzuändern, aber die Linien verhalten sich nicht so wie ich mir das vorstelle… :frowning:


#22

soviel ist ja nicht dabei, moveTo und lineTo als unsichtbare und sichtbare Linien hin zu neuen Punkten sicherlich ganz selbstverständlich,

bleiben die Kurven http://de.wikipedia.org/wiki/Bézierkurve hier mit dem etwas einfacheren Falle nur eines ‘Kontrollpunktes’,
die ersten beiden Parameter sind hier gleich dem Ausgangspunkt, auch wenn unschön zu wiederholen aus der Zeile davor, besonders falls nicht genug Variablen dafür

das Dreieck hat seiner Natur gemäß drei Ecken, hier 0,0 sowie 0,1 sowie 1, 0.5,
die spitzen Ecken sind nur die Bezierpunkte, die Kurven drehen vorher ab, der Mittelteil jeder Seite wird als Linie gezeichnet,
mit r kann man bestimmen wieviel fest ist, wieviel in die Kurven geht

das letzte fehlende gerade Stück automatisch ergänzt

    private Shape createArrowShape()
    {
        double r = 0.2;
        Path2D path = new Path2D.Double();
        path.moveTo(0, 0.5);
        path.lineTo(0, r);
        path.curveTo(0, r, 0, 0, r+r, r);
        path.lineTo(1-r, 0.5-r*0.5);
        path.curveTo(1-r, 0.5-r*0.5, 1, 0.5, 1-r, 0.5+r*0.5);
        path.lineTo(r+r, 1-r);
        path.curveTo(r+r, 1-r, 0, 1, 0, 1-r);
        path.closePath();
        return path;
    }

was willst du ändern? neben Spiegelung lohnt ja fast nur Streckung nach rechts, statt 1, 0.5 z.B. auf 1.5, 0.5
dann muss man alle x-Koordinaten die bisher 1 oder 1- irgendwas sind, auf 1.5 bzw. 1.5- irgendwas ändern usw.

besser ist dann wahrlich, schöne Variablen zu haben


#23

Ja, das einzig “irritierende” können ja eigentlich nur die curveTo-Aufrufe sein. Am besten einfach mal das erstbeste Bezier-Kurven-Applet starten (http://www-math.uni-paderborn.de/personelles/AG/Koeckler/MASKEN/bezier.html) und schauen, was die Kontrollpunkte für Auswirkungen haben.