Заполните область внутри двух CubicCurve2D.Float s и линии - PullRequest
1 голос
/ 07 сентября 2010

Я рисую вкладку в пользовательском интерфейсе.У меня есть план, как я хочу.Как мне заполнить область?

Этот код рисует границу вкладки:

val g2 = g.asInstanceOf[Graphics2D]

g2.translate(x, y)
val q = new CubicCurve2D.Float
q.setCurve(0, h, 8, h, 6, 0, 16, 0)
g2.setColor(Color.RED)
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON)
g2.draw(q)
val end = w - 8
g2.drawLine(17, 0, end, 0)
q.setCurve(end, 0, end+10, 0, w, h, w + 8, h)
g2.draw(q)

и это линия, которую она рисует (красная): image

Я бы хотел заполнить внутреннюю часть красной линии.

1 Ответ

3 голосов
/ 07 сентября 2010

Я не знаю Scala, но в Java 2D объект Graphics2D может заполнить или нарисовать контур любого Shape объекта.Для некоторой произвольной фигуры вы можете определить ее с помощью объекта GeneralPath , такого как:

GeneralPath path = new GeneralPath();
path.lineTo(10, 10);
path.lineTo(0, 10);
path.lineTo(0, 0);
graphics.setColor(Color.RED);
graphics.fill(path);

У объекта GeneralPath также есть методы для рисования кривых и квадратов Безье, поэтому вы должны нарисовать путь изатем выберите заполнение или нарисуйте его контур.

Добавлена ​​новая ссылка на GeneralPath

...