«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться прозрачных углов в закругленном прямоугольнике с помощью треугольного указателя?

Как добиться прозрачных углов в закругленном прямоугольнике с помощью треугольного указателя?

Опубликовано 12 ноября 2024 г.
Просматривать:976

How to Achieve Transparent Corners in a Rounded Rectangle with a Triangular Pointer?

Прозрачные углы в рамке со скругленными углами

В данном коде класс 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