Come calcolare i raggi (raggi) degli angoli per rects arrotondati concentrici


9

Ho un pulsante roundrect che voglio contenere all'interno di un altro roundrect. Il roundrect contenente dovrebbe essere sempre 1px di distanza dal pulsante.

Se il raggio sul contenitore è troppo piccolo, gli angoli hanno uno spazio maggiore attorno a loro.

Esiste una buona "regola empirica" ​​che posso usare per capire quale raggio dovrebbe essere per il roundrect più grande?

Risposte:


12

Se vuoi che il roundrect esterno sia 1px da quello interno, anche il raggio d'angolo del rettangolo esterno dovrebbe essere 1px più grande di quello interno.

Ecco un diagramma veloce che può aiutarti a vedere come funziona:
Diagramma del raggio d'angolo
Il rettangolo interno ha un raggio d'angolo di r pixel; il suo angolo segue l'arco del cerchio rosso interno, che ha un raggio di r pixel e il suo centro corrisponde di conseguenza r pixel dai lati del rettangolo.

Il rettangolo esterno ha un raggio d'angolo di r +1 pixel; il suo angolo segue l'arco del cerchio rosso esterno, che ha un raggio di r +1 pixel e il suo centro corrisponde rispettivamente a r +1 pixel dai lati del rettangolo. Poiché anche il rettangolo esterno viene spostato di un pixel verso l'alto e alla destra di quello interno (e, possiamo presumere, è due pixel più largo e più alto per compensare), i due cerchi sono concentrici e la distanza tra loro è sempre di un pixel.


Sono contento che la risposta sia così semplice!
Mike Brand

Avevo provato a ricrearlo confrontando un rettangolo tondo con un bordo esterno di 50 px e un nuovo rettangolo tondo (50 px più largo e più alto) con un raggio maggiore di 50 px. Non coincidono perfettamente, ma ora immagino che sia principalmente una stranezza del rendering dei contorni di Photoshop Grazie per la tua risposta!
Mike Brand

@Mike: ricorda che la distanza deve essere aggiunta su entrambi i lati del rettangolo. Quindi, se vuoi che il bordo del rettangolo esterno sia a 50 px dall'interno, devi rendere il rettangolo esterno 100 px più largo e più alto di quello interno (e aumentare il raggio dell'angolo di 50 px).
Ilmari Karonen,

6

Se si desidera che gli angoli abbiano centri condivisi, il raggio dell'angolo della forma esterna dovrebbe essere semplicemente il raggio dell'angolo della forma interna più la distanza tra le forme. Se la forma interna ha un raggio dell'angolo arrotondato di 5 pixel e la forma esterna è a 1 pixel di distanza, il raggio dell'angolo della forma esterna dovrebbe essere di 6 pixel. (Non tiene conto di eventuali pesi di corsa.)

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.