Uso Xamarin.Forms , tengo Image . Quiero bordear con Corner Radius y Border Width . Puedo hacerlo ? Intento usar Frame . Es bueno, pero solo tiene Border Width = 1 y no puedo cambiarlo. Sé sobre Effect , pero no quiero usarlos. ¿Puedo hacerlo, por ejemplo, con Rectangle o de alguna manera?
Puedes intentar algo como esto:
<Frame HasShadow="False" CornerRadius="25" Padding="2" BackgroundColor="#F69927"> <Frame HasShadow="False" CornerRadius="23" BackgroundColor="White" Padding="12"> <StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand" VerticalOptions="Start"> <!-- Content --> </StackLayout> </Frame> </Frame>Simplemente envuelva su marco en otro marco dándole el color de fondo que desea que sea el color de borde. Y dale al relleno del marco del envoltorio. Aquí hay un ejemplo de la imagen redonda con borde.
<Frame CornerRadius="60" HeightRequest="100" WidthRequest="100" BackgroundColor="White" HorizontalOptions="Center" VerticalOptions="Start" Padding="2" IsClippedToBounds="True"> <Frame CornerRadius="60" HeightRequest="100" WidthRequest="100" BackgroundColor="White" HorizontalOptions="Center" VerticalOptions="Start" Margin="0" Padding="0" IsClippedToBounds="True"> <Image Source="dp.jpg" HeightRequest="40" WidthRequest="40" Aspect="AspectFill"></Image> </Frame> </Frame>Puede crear su propia implementación con efectos o ampliar la biblioteca de código abierto de FreshEssentials . Tienen un control llamado AdvancedFrame que proporciona renderizadores personalizados para el control Frame en todas las plataformas.
Si observa cada proyecto específico de la plataforma, notará las clases AdvancedFrameRenderer que crean rutas de Bezier para compatibilidad con esquinas redondeadas. Solo tendrá que sumergirse en el método Draw en cada plataforma ( iOS , Android ) y descubrir cómo configurar el ancho del trazo.
Es más fácil comenzar desde Android ya que allí el ancho del trazo ya está definido en el código ( en esta línea ). Solo querrá crear una propiedad para eso en el control AdvancedFrame para que pueda tener un ancho diferente en cada control. No estoy seguro de cómo configurar el ancho del trazo en iOS, pero está usando UIBezierPath, que debería ser bastante fácil de modificar.