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

Discussion in 'Frågor, support och diskussion' started by Edgar Varningsson, Oct 11, 2010.

  1. Edgar Varningsson

    Edgar Varningsson Infant Droid Medlem

    Joined:
    Oct 11, 2010
    Messages:
    10
    Likes Received:
    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

    Joined:
    Aug 8, 2010
    Messages:
    28
    Likes Received:
    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: Oct 12, 2010
  3. Edgar Varningsson

    Edgar Varningsson Infant Droid Medlem

    Joined:
    Oct 11, 2010
    Messages:
    10
    Likes Received:
    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

    Joined:
    Oct 11, 2010
    Messages:
    10
    Likes Received:
    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();