Sharp Fill

melmager

Erfahrenes Mitglied
ich habe eben festgestellt das Java beim Fill den ganzen GeneralPath (Sharpe) füllt.

ich hatte eigendlich for eine frei Fläche zu lassen - muss ich tatsächlich erst den Aussenrand zeichnen und dann Schwarz füllen und dann innen die Weisse Fläche malen und die dann Weiss füllen ?
Oder habe ich ein denkfehler ?

Code:
GeneralPath makeMinorEs(int xrelpos,int yrelpos) {
        GeneralPath p = new GeneralPath(); //b zeichen
        xrelpos = xrelpos + px4step * 6; // ein slot nach rechts

        p.moveTo(xrelpos + px4step * 0.5, yrelpos + px4step * 1.75);
        p.quadTo(xrelpos + px4step * 1.5, yrelpos + px4step * 1.5, xrelpos + px4step * 1.5, yrelpos + px4step );
        p.quadTo(xrelpos + px4step , yrelpos + px4step * 0.75  , xrelpos + px4step * 0.5 , yrelpos + px4step * 1.25);
        p.lineTo(xrelpos + px4step * 0.5, yrelpos + px4step * 1.75);

        p.moveTo(xrelpos + px4step * 0.25, yrelpos - px4step * 2);
        p.lineTo(xrelpos + px4step * 0.25, yrelpos + px4step * 2);
        p.quadTo(xrelpos + px4step * 1.75, yrelpos + px4step * 1.75, xrelpos + px4step * 1.75, yrelpos + px4step );
        p.quadTo(xrelpos + px4step * 1.5, yrelpos + px4step * 0.25, xrelpos + px4step * 0.5, yrelpos + px4step);
        p.lineTo(xrelpos + px4step * 0.5 , yrelpos - px4step * 2);
        p.lineTo(xrelpos + px4step * 0.25, yrelpos - px4step * 2);

        return p;
    }
da ich das Symbol mehrmals zeichne wird über ein for schleife ermittelt wo gezeichnet werden soll
Code:
int[][] circleMinor = {{0,0},{10,0},{7,1},{11,2},{8,3},{12,4},{9,5},{13,0}}; 

for (int loop=type*-1;loop > 0;loop--) {
            sign = makeMinorEs( posX + circleMinor[loop][1] * px4step, posY + circleMinor[loop][0] * px4step );
            cof.fill(sign);
            cof.draw(sign);
        }

Zeichnung ohne Fill siehe Foto
 

Anhänge

  • Bildschirmfoto9.png
    Bildschirmfoto9.png
    299 Bytes · Aufrufe: 36
Zuletzt bearbeitet:
Zurück