Android рисует растровое изображение на полигонах - PullRequest
1 голос
/ 04 января 2011

Я пытаюсь нарисовать растровое изображение на многоугольнике, у которого есть стороны больше 4. Я делаю это с opengl, но я понял, что в 2D есть метод drawBitmapMesh в Canvas для этого.Он работал для 4-х стороннего многоугольника, но не работал для 5. Это работает

float verts[] = {0,0, 0,10, 0,20 ,0,30, 10,0, 10,10, 10,20, 10,30, 20,0, 20,10, 20,20, 20,30, 30,0, 30,10, 30,20, 30,30};
canvas.drawBitmapMesh(bitmap, 3, 3, verts, 0, null, 0, null);

Это не работает, выдает ошибку времени выполнения.

float verts[] = {0,0, 0,10, 0,20 ,0,30, 0,40, 10,0, 10,10, 10,20, 10,30,10,40, 20,0, 20,10, 20,20, 20,30,20,40, 30,0, 30,10, 30,20, 30,30,30,40};
canvas.drawBitmapMesh(bitmap, 4, 4, verts, 0, null, 0, null);

1 Ответ

2 голосов
/ 04 января 2011

Из документации SDK :

verts Массив пар x, y, указывающий, где должен быть нарисован меш. Должно быть не менее (meshWidth + 1) * (meshHeight + 1) * 2 + значений meshOffset в массиве

В вашем массиве 38 значений, а приведенный выше расчет с параметрами дает: (4 + 1) * (4 + 1) * 2 + 0 = 50 значений ...

...