Ich brauche Bildkontrolle in Xamarin.Forms mit abgerundeten Ecken. Aber ich habe keine Immobilie gefunden, die es schaffen könnte. Wie man kreisförmiges Bild hat?CircularImage in Xamarin.Forms
3
A
Antwort
6
können Sie Image Circle Control Plugin
<controls:CircleImage Source="{Binding Image}" Aspect="AspectFill">
<controls:CircleImage.WidthRequest>
<OnPlatform x:TypeArguments="x:Double"
iOS="55"
Android="55"
WinPhone="75"/>
</controls:CircleImage.WidthRequest>
<controls:CircleImage.HeightRequest>
<OnPlatform x:TypeArguments="x:Double"
iOS="55"
Android="55"
WinPhone="75"/>
</controls:CircleImage.HeightRequest>
</controls:CircleImage>
Lesen Sie verwenden mehr bei Project github readme
Sie auch CircleImage von Xamarin-Forms-Labs-Projekt verwenden können.
2
Wenn Sie eine Lösung mit benutzerdefinierten Renderern benötigen (um das Steuerelement wie gewünscht zu optimieren), hier ist meine Implementierung dafür.
public class ImageCircle:Image
{
public ImageCircle()
{
}
}
[assembly: ExportRenderer(typeof(ImageCircle), typeof(ImageCircleRenderer))]
namespace myNamespace.Droid
{
public class ImageCircleRenderer:ImageRenderer
{
public ImageCircleRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
if ((int)Android.OS.Build.VERSION.SdkInt < 20)
SetLayerType(Android.Views.LayerType.Software, null);
}
}
protected override bool DrawChild(Canvas canvas, global::Android.Views.View child, long drawingTime)
{
try
{
var radius = Math.Min(Width, Height)/2;
var strokeWidth = 10;
radius -= strokeWidth/2;
//Create path to clip
var path = new Path();
path.AddCircle(Width/2, Height/2, radius, Path.Direction.Ccw);
canvas.Save();
canvas.ClipPath(path);
var result = base.DrawChild(canvas, child, drawingTime);
canvas.Restore();
// Create path for circle border
path = new Path();
path.AddCircle(Width/2, Height/2, radius, Path.Direction.Ccw);
var paint = new Paint();
paint.AntiAlias = true;
paint.StrokeWidth = 5;
paint.SetStyle(Paint.Style.Stroke);
paint.Color = global::Android.Graphics.Color.White;
canvas.DrawPath(path, paint);
//Properly dispose
paint.Dispose();
path.Dispose();
return result;
}
catch (Exception ex)
{
Console.WriteLine("Unable to create circle image: " + ex);
}
return base.DrawChild(canvas, child, drawingTime);
}
}
}
[assembly: ExportRenderer(typeof(ImageCircle), typeof(ImageCircleRenderer))]
namespace LifesTopTen.iOS
{
public class ImageCircleRenderer:ImageRenderer
{
public ImageCircleRenderer()
{
}
private void CreateCircle()
{
try
{
double min = Math.Min(Element.Width, Element.Height);
Control.Layer.CornerRadius = (float)(min/2.0);
Control.Layer.MasksToBounds = false;
Control.Layer.BorderColor = Color.White.ToCGColor();
Control.Layer.BorderWidth = 3;
Control.ClipsToBounds = true;
}
catch(Exception ex)
{
Console.WriteLine ("Unable to create circle image: " + ex);
}
}
protected override void OnElementChanged (ElementChangedEventArgs<Image> e)
{
base.OnElementChanged (e);
if (e.OldElement != null || Element == null)
return;
CreateCircle();
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == VisualElement.HeightProperty.PropertyName ||
e.PropertyName == VisualElement.WidthProperty.PropertyName)
{
CreateCircle();
}
}
}
}
6
Ich verwende die FFImageLoading Bibliotheken CachedImage
Steuerung mit einem Kreis-Transformation für Kreis Bilder:
<ffimageloading:CachedImage
DownsampleToViewSize="true"
Aspect="AspectFill"
Source = "{Binding Image}"
LoadingPlaceholder = "{Binding DefaultImage}"
ErrorPlaceholder = "{Binding DefaultImage}">
<ffimageloading:CachedImage.Transformations>
<fftransformations:CircleTransformation />
</ffimageloading:CachedImage.Transformations>
</ffimageloading:CachedImage>
+0
Bibliothek ist gut, aber die circletransformation Grenze ist ein bisschen hässlich ich denke (nicht glatt) –
Verwandte Themen
- 1. Audioaufnahme in Xamarin.forms
- 2. Seitenlebenszyklusereignisse in xamarin.forms
- 3. Skia-Ansichtselement in xamarin.forms
- 4. Wie in Xamarin.Forms umleiten
- 5. Standardklassenordner in Xamarin.Forms
- 6. Animiertes Gif in Xamarin.forms
- 7. Hyperlink in C# XAMARIN.FORMS
- 8. Timer in Xamarin.forms
- 9. Separatoren in Xamarin.Forms
- 10. Native Page in Xamarin.Forms
- 11. Benutzerdefiniertes Popup in Xamarin.Forms
- 12. Kontakte in Xamarin.Forms lesen
- 13. Verwendung von Xamarin.Forms in einem ursprünglich nicht-Xamarin.Forms-Projekt
- 14. Xamarin.forms OnAppLinkRequestReceived
- 15. Wird F # in Xamarin.Forms unterstützt?
- 16. Deaktiviere WebView Scrollen in Xamarin.Forms
- 17. Entity Framework 7 in Xamarin.Forms
- 18. Platz in Xamarin.Forms Layouts hinzufügen?
- 19. Xamarin.Forms Image Slider in Xaml
- 20. Floating Action Button in Xamarin.Forms
- 21. xamarin.forms Anzeige in der Listenansicht
- 22. Scrollen horizontal in Xamarin.Forms ScrollView
- 23. Ändern von TextColor in Xamarin.Forms
- 24. Rahmenfarbe für Editor in Xamarin.Forms
- 25. DynamoDB Query Xamarin.Forms
- 26. Xamarin.Forms UWP fehlende Referenzen
- 27. Xamarin.Forms Bindable Picker
- 28. Xamarin.Forms-Anwendung Symbol
- 29. Xamarin.Forms - Push Notification - iOS
- 30. Seltsames Problem mit xamarin.forms
es gut zu wissen ist. – hotspring