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.