Android – Заполните цвет ниже линейной диаграммы

Я строю линейную диаграмму для одного из наших приложений. Линейная часть диаграммы работает нормально, но теперь я должен заполнить область под линией цветом, что-то вроде этого изображения ниже.

Введите описание изображения здесь

Я использую этот код, чтобы нарисовать линию на растровое изображение, используя холст.

List<Float> xCoordinates = (List<Float>) coordinates[0]; List<Float> yCoordinates = (List<Float>) coordinates[1]; for (int i = 0; i < xCoordinates.size(); i++) { if (!firstSet) { x = xCoordinates.get(i); y = yCoordinates.get(i); p.moveTo(x, y); firstSet = true; } else { x = xCoordinates.get(i); y = yCoordinates.get(i); p.lineTo(x, y); } } textureCanvas.drawPath(p, pG); 

Мне нужно знать, есть ли способ легко найти область под линией и сделать ее цветной, или мне нужно вычислить каждую область между 3 точками для графика и заполнить ее цветом?

Я не могу использовать существующие библиотеки диаграмм, такие как AchartEngine , ChartDroid , aFreeChart и т. Д.

    Найден решение

    Сначала я нарисовал градиент, после этого я нарисовал линейную диаграмму и стирался по всей линии, создав еще один путь, следующий за линейной диаграммой, и закрыл его в конце. После этого я нарисовал область прозрачную, чтобы стереть верхнюю часть градиента.

      List<Float> xCoordinates = coordinates.first; List<Float> yCoordinates = coordinates.second; for (int i = 0; i < xCoordinates.size(); i++) { if (!firstSet) { x = xCoordinates.get(i); y = yCoordinates.get(i); linePath.moveTo(x, y); erasePath.moveTo(x, 0); erasePath.lineTo(x, y); firstSet = true; } else { x = xCoordinates.get(i); y = yCoordinates.get(i); linePath.lineTo(x, y); erasePath.lineTo(x, y); } } erasePath.lineTo(getWidth(), y); erasePath.lineTo(getWidth(), 0); erasePath.lineTo(0, 0); getTextureCanvas().drawPath(erasePath, clear); getTextureCanvas().drawPath(linePath, pG); 

    Результат выглядел так:

    Введите описание изображения здесь

    Другой способ сделать это – точно пройти путь и обрезать нижние края и просто нарисовать градиент во втором пути. Это даст тот же результат, но все содержимое над графиком будет сохранено и ничего не будет стерто.