Como calcular os raios (raios) dos cantos para rects arredondados concêntricos


9

Eu tenho um botão roundrect que eu quero conter dentro de outra roundrect. O roundrect contendo sempre deve estar 1px do botão.

Se eu diminuir o raio do contêiner, os cantos terão uma lacuna maior ao seu redor.

Existe uma boa "regra de ouro" que eu possa usar para descobrir qual deve ser o raio para o roundrect maior?

Respostas:


12

Se você deseja que o roundrect externo fique 1px distante do interno, o raio do canto do retângulo externo também deve ser 1px maior que o interno.

Aqui está um diagrama rápido que pode ajudá-lo a ver como funciona:
Diagrama do raio do canto
O retângulo interno possui um raio de canto de r pixels; seu canto segue o arco do círculo vermelho interno, que tem um raio de r pixels e seu centro correspondentemente r pixels de distância dos lados do retângulo.

O retângulo externo possui um raio de canto de r +1 pixels; seu canto segue o arco do círculo vermelho externo, que possui um raio de r +1 pixels e seu centro correspondentemente r +1 pixels longe dos lados do retângulo. Como o retângulo externo também é deslocado um pixel para cima e para a direita do interior (e, podemos presumir, é dois pixels mais largo e mais alto para compensar), os dois círculos são concêntricos e a distância entre eles é sempre um pixel.


Fico feliz que a resposta seja tão fácil!
— Mike Marca

Eu tentei recriar isso comparando um retângulo arredondado com uma borda externa de 50 px e um novo retângulo redondo (50px mais largo e mais alto) com um raio 50px maior. Eles não combinaram muito bem, mas agora imagino que seja principalmente uma peculiaridade da renderização de contornos do Photoshop. Obrigado pela resposta!
— Mike Marca

@ Mike: Lembre-se de que a distância precisa ser adicionada aos dois lados do retângulo. Portanto, se você deseja que a borda do retângulo externo seja 50 px a partir do interior, é necessário tornar o retângulo externo 100 px mais largo e mais alto que o interno (e aumentar o raio do canto em 50 px).
— Ilmari Karonen

6

Se você deseja que os cantos tenham centros compartilhados, o raio do canto da forma externa deve ser simplesmente o raio do canto da forma interna mais a distância entre as formas. Se sua forma interna tiver um raio de canto arredondado de 5 pixels e sua forma externa estiver a 1 pixel de distância, o raio de canto da forma externa deverá ser de 6 pixels. (Não levando em consideração nenhum peso de curso).

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.