Как заполнить Android-путь, содержащий отверстия, не заполняя отверстия? - PullRequest
4 голосов
/ 13 февраля 2011

В настоящее время я программирую очень простую игру для Android (уровень API 7), чтобы открыть и изучить Android SDK.Эта игра предполагает рисование на экране формы, которая будет менять цвет при прикосновении.

Некоторые фигуры могут включать одно или несколько отверстий.Моя проблема заключается в следующем: если я коснусь формы, весь цвет изменится, даже отверстия ».Вот псевдокод, который я использую, форма - это многоугольник, который я хочу нарисовать, ограничить его внешнюю границу, дырки - массив его дырок.Отверстие и граница содержат массив их точек.

Path MyPath = Path();
Path.moveTo(boundary.points[0].x, boundary.point[0].x);
for (point in boundary) {
  MyPath.lineTo(point.x, point.y);
}
Path.close();

for (hole in shape.holes) {
  MyPath.moveTo(hole.points[0].x,hole.points[0].y);
  for (point in hole) {
    MyPath.lineTo(point.x, point.y);
  }
  MyPath.close();
}

// setting Paint here...
canvas.drawPath(MyPath, MyPaint);

Я что-то упускаю из-за Path в Android или у вас есть альтернативный способ сделать это?

1 Ответ

7 голосов
/ 13 февраля 2011

Вы уверены, что используете правильное правило заполнения пути? Если вы используете, например, WINDING как правило заполнения, отверстия должны быть в противоположных направлениях относительно внешней границы (например, граница против часовой стрелки и отверстия по часовой стрелке)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...