Мне не удалось найти решение этой проблемы. Я хотел бы нарисовать заполненный треугольник в Java с градиентом, где каждый угол имеет другой цвет. Что-то вроде этого:Заполнить треугольник с 3 градиентом цвета в Java
Я нашел некоторые сообщения в Интернете, но я не был в состоянии понять, как сделать градиент в Java. Проблема в том, что в Java вы можете делать GradientPaint только с одного цвета на другой, что не подходит для заполнения треугольника.
До сих пор я пришел с этим кодом, который не работает, как ожидалось:
triangle.p1().getValue();
Color color1 = calculateColor(triangle.p1().getValue());
Color color2 = calculateColor(triangle.p2().getValue());
Color color3 = calculateColor(triangle.p3().getValue());
Color transparent = new Color(0, 0, 0, 0);
Polygon polygon = new Polygon(
new int[]{(int) triangle.p1().x(), (int) triangle.p2().x(), (int) triangle.p3().x()},
new int[]{(int) triangle.p1().y(), (int) triangle.p2().y(), (int) triangle.p3().y()},
3);
GradientPaint gradient1 = new GradientPaint(
(float) triangle.p1().x(), (float) triangle.p1().y(), color1,
(float) triangle.p2().x(), (float) triangle.p2().y(), transparent);
GradientPaint gradient2 = new GradientPaint(
(float) triangle.p2().x(), (float) triangle.p2().y(), color2,
(float) triangle.p3().x(), (float) triangle.p3().y(), transparent);
GradientPaint gradient3 = new GradientPaint(
(float) triangle.p3().x(), (float) triangle.p3().y(), color3,
(float) triangle.p1().x(), (float) triangle.p1().y(), transparent);
graphics2d.setPaint(gradient1);
graphics2d.fill(polygon);
graphics2d.setPaint(gradient2);
graphics2d.fill(polygon);
graphics2d.setPaint(gradient3);
graphics2d.fill(polygon);
Некоторые темы, которые упоминают подобную вещь: Triangle Gradient With Core Graphics и Java 3 Color Gradient
В чем проблема? У вас есть хорошее объяснение, даже примерный код. Есть ли ошибки? Ваш код (пожалуйста, напишите) не работает? Или вы застряли в одной конкретной детали? Пожалуйста, будьте более конкретными. – n247s
Я обновил описание проблемы и добавил код. – matomato
Каков результат, который вы получите с помощью этого кода, не могли бы вы добавить скриншот текущего результата? (Мое мнение было бы о том, что его интерполяция на белый в середине треугольника?) – n247s