A simple and elegant way of displaying circle images in your Xamarin.Forms projects.
Be sure to change the DLL name to:
xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin"
In your iOS, Android, and Windows projects call:
Xamarin.Forms.Init(); //platform specific init
ImageCircleRenderer.Init();
You must do this AFTER you call Xamarin.Forms.Init();
Platform Support
Platform | Version |
---|---|
Xamarin.iOS | iOS 7+ |
Xamarin.Android | API 14+ |
Windows 10 UWP | 10+ |
Instead of using an Image simply use a CircleImage instead!
You MUST set the width & height requests to the same value and you will want to use Aspect.AspectFill
for the value of the Aspect
property. Here is a sample:
new CircleImage
{
BorderColor = Color.White,
BorderThickness = 3,
HeightRequest = 150,
WidthRequest = 150,
Aspect = Aspect.AspectFill,
HorizontalOptions = LayoutOptions.Center,
Source = UriImageSource.FromUri(new Uri("http://upload.wikimedia.org/wikipedia/commons/5/55/Tamarin_portrait.JPG"))
}
XAML:
First add the xmlns namespace:
xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin"
Then add the xaml:
<controls:CircleImage Source="{Binding Image}" Aspect="AspectFill">
<controls:CircleImage.WidthRequest>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="Android, iOS">55</On>
<On Platform="WinPhone">75</On>
</OnPlatform>
</controls:CircleImage.WidthRequest>
<controls:CircleImage.HeightRequest>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="Android, iOS">55</On>
<On Platform="WinPhone">75</On>
</OnPlatform>
</controls:CircleImage.HeightRequest>
</controls:CircleImage>
Bindable Properties
You are able to set the BorderColor
to a Forms.Color to display a border around your image and also BorderThickness
for how thick you want it.
You can also set FillColor
to the Forms.Color to fill the circle. DO NOT set BackgroundColor
as that will be the square the entire image takes up.
These are supported in iOS, Android, WinRT, and UWP (not on Windows Phone 8 Silverlight).
For linking you may need to add:
ImageCircle.Forms.Plugin;
--linkskip=ImageCircle.Forms.Plugin
Be sure to read through the troubleshooting for UWP with .NET Native for your final package. You should add the package to the Init call of Xamarin.Forms such as:
var rendererAssemblies = new[]
{
typeof(ImageCircleRenderer).GetTypeInfo().Assembly
};
Xamarin.Forms.Forms.Init(e, rendererAssemblies);
Licensed under MIT, see license file
All I have ever asked is to be active by submitting bugs, features, and sending those pull requests down! Want to go further? Make sure to subscribe to my weekly development podcast Merge Conflict, where I talk all about awesome Xamarin goodies and you can optionally support the show by becoming a supporter on Patreon.