Hur gör man för att fylla 2d-polygoner?

Diskussion i 'Frågor, support och diskussion' startad av Edgar Varningsson, 11 okt 2010.

  1. Edgar Varningsson

    Edgar Varningsson Infant Droid Medlem

    Blev medlem:
    11 okt 2010
    Inlägg:
    10
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag kan rita polygoner med canvas.drawVertices, men kan inte fylla dem. Jag har satt Paint.Style.FILL på paint objectet,men polygonen fylls inte. Det här är min kod:

    mLinePaint2 = new Paint();
    mLinePaint2.setARGB(255, 255, 0, 0);
    mLinePaint2.setStyle(Paint.Style.FILL);

    canvas.drawVertices(Canvas.VertexMode.TRIANGLES, verts.length, verts, 0, null, 0, null, 0, null, 0, 0, mLinePaint2);
     
  2. ichi7e

    ichi7e Baby Droid Medlem

    Blev medlem:
    8 aug 2010
    Inlägg:
    28
    Mottagna gillanden:
    0

    MINA ENHETER

    Om du finner en lösning så är jag intresserad av att veta hur du gjorde. Jag ska nämnligen själv göra något liknande framöver fast med tile:ade texturer. Har funderat lite men har inte kommit på något bra sätt att lösa det på än.

    En alternativ lösning, om det går att göra på pixelnivå, är att lägga en helt rektangulär ifylld färg över polygonen och sedan kolla för varje pixel om den befinner sig innanför polygonen eller inte och enbart spara de som är innanför. Men jag vet inte ens om detta är möjligt med android api:t och jag tycker det borde finnas någon bättre lösning :(

    Edit: Första sökresultatet från Google http://alienryderflex.com/polygon_fill/
     
    Last edited: 12 okt 2010
  3. Edgar Varningsson

    Edgar Varningsson Infant Droid Medlem

    Blev medlem:
    11 okt 2010
    Inlägg:
    10
    Mottagna gillanden:
    0

    MINA ENHETER

    OK,jag meddelar när jag hittar någon lösning på detta.
    Jag tittade på länken du skickade, men det måste finnas något enklare sätt att lösa detta. Att fylla polygoner är en så enkel och grundläggande funktionalitet. Det måste finnas någon färdig metod att göra detta i Android API.
     
  4. Edgar Varningsson

    Edgar Varningsson Infant Droid Medlem

    Blev medlem:
    11 okt 2010
    Inlägg:
    10
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag har hittat lösningen på detta nu. Man ska använda Path klassen istället.

    ungefär så här:

    for (int i = 0; i < 2 * pieceSize; i++) {
    if (i == 0)
    path.moveTo(tempX, tempY);
    else
    path.lineTo(tempX, tempY);
    }LunarView.c.drawPath(path, mLinePaint2);
    path.reset();