jamesmontemagno / ImageCirclePlugin

Circle Images for your Xamarin.Forms Applications
MIT License
238 stars 69 forks source link

Circle Image Control Plugin for Xamarin.Forms

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"

Setup

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+

Usage

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).

Final Builds

For linking you may need to add:

Android:

ImageCircle.Forms.Plugin;

iOS:

--linkskip=ImageCircle.Forms.Plugin

UWP:

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);

License

Licensed under MIT, see license file

Want To Support This Project?

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.