ではありません私はここのコードを使用して画像レンダラーを持っている:https://blog.xamarin.com/elegant-circle-images-in-xamarin-forms/サークルの画像は、完全な円
public class ImageCircleRenderer: ImageRenderer
{
private void CreateCircle()
{
try
{
double min = Math.Min(Element.Width, Element.Height);
Control.Layer.CornerRadius = (float)(min/2.0);
Control.Layer.MasksToBounds = false;
Control.ClipsToBounds = true;
}
catch (Exception ex)
{
Debug.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();
}
}
}
その後、私は写真を含むビューのセルで、私のテーブルビューを設定します。このよう
:私はこの絵に完全な円を作ることができますどのように
:
private void SetTableView()
{
int photoSize = 120;
var photo = new ImageCircle
{
Source = "profile_placeholder.png",
WidthRequest = photoSize,
HeightRequest = photoSize,
Aspect = Aspect.AspectFill,
HorizontalOptions = LayoutOptions.Center,
Scale = 1.0
};
Content = new TableView
{
HasUnevenRows = true,
Intent = TableIntent.Menu,
Root = new TableRoot()
{
new TableSection()
{
new ViewCell
{
Height = photoSize,
View = new StackLayout
{
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.Start,
VerticalOptions = LayoutOptions.Start,
Padding = 15,
Children =
{
photo,
new Label
{
Text = "Casa de Férias"
}
}
}
}
}
}
};
}
は残念ながら、結果はこれですか?私はこれがうまくいかない理由がないと思っています...
私は同じ幅と高さを設定しました。また、画像のAspectプロパティで定義されているアスペクト比。
私には何が欠けていますか?
ありがとうございました!
編集:James MontemagnoのImageCircleプラグインを使用してみましたが、同じことが起こります。おそらく私のレイアウトに問題があると思いますか?
これだけ作品正方形の画像で。リンク先のウェブサイトでは、「ここで重要な点は、あなたの画像に同じ幅と高さを要求し、アスペクトをAspectFillに設定して円を切り抜くための完全な四角形を確保することです」 – Meyer
イメージプレースホルダは実際には完全な正方形です。私は120x120のイメージを使用しています.2xのリソースは240x240、3xのリソースは360x360です。 – nmdias
あなたは正しいです、申し訳ありません。私はあなたがすでに問題を発見したのを見る。 – Meyer