Как создать маску и рисовать на ней

У меня есть 2 прямоугольника, как на изображении ниже:

Как создать маску и рисовать на ней

теперь я хочу нарисовать только ту часть желтого прямоугольника (B), которая находится внутри красного прямоугольника. Итак, я установил clipchildreen=True для прямоугольника A и получил следующее:

Как создать маску и рисовать на ней

Но это не хорошо, так как часть желтого прямоугольника за пределами красного прямоугольника все еще рисуется. Я хочу получить это:

Как создать маску и рисовать на ней

Как я могу сделать ? В конце концов я могу рисовать прямо на холсте, но даже так я не нашел простого способа добиться того, что я хочу сделать.

Красный элемент управления — это просто нарисованный со скругленными углами, но его форма по-прежнему прямоугольник. Вот почему вы видите, что желтый элемент управления выглядит именно так. Посмотрите, решит ли этот ответ вашу проблему.

Remy Lebeau 20.03.2022 02:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот решение, которое может подойти вам, хотя я сделал некоторые предположения о ваших требованиях, и это не особенно простой подход. Он включает в себя использование прямоугольника с InnerRound углами, чтобы скрыть часть желтого квадрата.

Для приведенных ниже шагов я предполагаю, что форма белая, желтый квадрат 50 х 50, красный квадрат 150 х 150, закругленные углы имеют радиус 20, и все это расположено на форме в точке 100,100.

Я описал это так, как будто вы вручную размещаете все элементы управления прямо на форме, но если бы я делал это, я бы добавил пару TLayout и везде использовал Align (с отрицательными полями в случае четвертого шага). ). И вы можете сделать это на панели или другом элементе управления, а не непосредственно в форме.

Обратите внимание, что z-порядок важен, поэтому шаги со 2 по 5 ниже следует выполнять именно в этом порядке.

  1. Установите Fill.Kind формы на Solid.
  2. Поставьте TRectangle на 100 100. Установите для XRadius и YRadius значение 20, для Width и Height значение 150, для Fill.Color значение Red и для Stroke.Kind значение None.
  3. Поставьте TRectangle на 100 100. Установите Fill.Color на Yellow.
  4. Поместите TRectangle на 80,80. Установите оба XRadius и YRadius на 20, оба Height и Width на 20, Fill.Color на White (Fill.color формы), Stroke.Kind на None и CornerType на InnerRound.
  5. Поставьте TRectangle на 100 100. Установите для XRadius и YRadius значение 20, для Height и Width значение 150, а для Fill.Kind значение None.

Вот результат:

screenshot

Другие вопросы по теме