Прозрачные углы в рамке со скругленными углами
В данном коде класс TextBubbleBorder рисует закругленный прямоугольник с треугольным указателем внизу . Однако углы за пределами прямоугольника немного расширяются, показывая цвет фона родительской панели. Чтобы добиться прозрачных углов, мы модифицируем метод PaintBorder, включив в него дополнительный шаг:
// Paint the BG color of the parent, everywhere outside the clip // of the text bubble. Component parent = c.getParent(); if (parent!=null) { Color bg = parent.getBackground(); Rectangle rect = new Rectangle(0,0,width, height); Area borderRegion = new Area(rect); borderRegion.subtract(area); g2.setClip(borderRegion); g2.setColor(bg); g2.fillRect(0, 0, width, height); g2.setClip(null); }
Этот код проверяет, имеет ли компонент родительский элемент, извлекает цвет его фона и создает прямоугольник, представляющий всю область границы. Затем он создает объект Area borderRegion, который представляет этот прямоугольник. Затем он вычитает область, представляющую текстовый пузырь, из borderRegion, создавая область с именем clip, которая представляет область за пределами текстового пузыря.
При использовании clip код устанавливает область отсечения для объекта Graphics2D, заполняет ее. с цветом фона родительского элемента, а затем сбрасывает область отсечения, чтобы нарисовать саму границу. Это гарантирует, что углы за пределами закругленного прямоугольника станут прозрачными, показывая цвет фона родительского элемента.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3