У меня есть 2 прямоугольника, как на изображении ниже:
теперь я хочу нарисовать только ту часть желтого прямоугольника (B), которая находится внутри красного прямоугольника. Итак, я установил clipchildreen=True для прямоугольника A и получил следующее:
Но это не хорошо, так как часть желтого прямоугольника за пределами красного прямоугольника все еще рисуется. Я хочу получить это:
Как я могу сделать ? В конце концов я могу рисовать прямо на холсте, но даже так я не нашел простого способа добиться того, что я хочу сделать.
Вот решение, которое может подойти вам, хотя я сделал некоторые предположения о ваших требованиях, и это не особенно простой подход. Он включает в себя использование прямоугольника с InnerRound
углами, чтобы скрыть часть желтого квадрата.
Для приведенных ниже шагов я предполагаю, что форма белая, желтый квадрат 50 х 50, красный квадрат 150 х 150, закругленные углы имеют радиус 20, и все это расположено на форме в точке 100,100.
Я описал это так, как будто вы вручную размещаете все элементы управления прямо на форме, но если бы я делал это, я бы добавил пару TLayout
и везде использовал Align
(с отрицательными полями в случае четвертого шага). ). И вы можете сделать это на панели или другом элементе управления, а не непосредственно в форме.
Обратите внимание, что z-порядок важен, поэтому шаги со 2 по 5 ниже следует выполнять именно в этом порядке.
Fill.Kind
формы на Solid
.TRectangle
на 100 100. Установите для XRadius
и YRadius
значение 20, для Width
и Height
значение 150, для Fill.Color
значение Red
и для Stroke.Kind
значение None
.TRectangle
на 100 100. Установите Fill.Color
на Yellow
.TRectangle
на 80,80. Установите оба XRadius
и YRadius
на 20, оба Height
и Width
на 20, Fill.Color
на White
(Fill.color
формы), Stroke.Kind
на None
и CornerType
на InnerRound
.TRectangle
на 100 100. Установите для XRadius
и YRadius
значение 20, для Height
и Width
значение 150, а для Fill.Kind
значение None
.Вот результат:
Красный элемент управления — это просто нарисованный со скругленными углами, но его форма по-прежнему прямоугольник. Вот почему вы видите, что желтый элемент управления выглядит именно так. Посмотрите, решит ли этот ответ вашу проблему.