【问题标题】:Oval Shape in Overlay View in XamarinXamarin 叠加视图中的椭圆形
【发布时间】:2021-09-22 12:36:13
【问题描述】:

我按照这个Blog 在我的相机预览中添加了叠加视图。

在后台打开Camera Preview,在它的顶部有覆盖的外部矩形(紫红色)和内部的圆形。

有两种形状圆形心形。我想添加椭圆形

我添加了椭圆形,但没有用。

OverlayView.cs

public enum OverlayShape
    {
        Circle,
        Heart,
        Oval
    }
public static readonly BindableProperty ShapeProperty = BindableProperty.Create(
   propertyName: nameof(Shape),
   returnType: typeof(CameraOverlayShape),
   declaringType: typeof(CameraOverlayView),
   defaultValue: CameraOverlayShape.Oval,
   defaultBindingMode: BindingMode.TwoWay);

NativeOverlayView.cs

OverlayShape overlayShape = OverlayShape.Oval;

public OverlayShape Shape
{
    get { return overlayShape; }
    set
    {
        overlayShape = value;
        Redraw();

    }
}
Paint paint = new Paint(PaintFlags.AntiAlias)
{
    Color = OverlayBackgroundColor,
    Alpha = (int)(255 * Opacity)
};

RectF outerRectangle = new RectF(0, 0, width, height);

osCanvas.DrawRect(outerRectangle, paint);
switch (Shape)
{
    case OverlayShape.Oval:
        osCanvas.DrawOval(outerRectangle, paint);

        break;
    default:
    
    // Code
    
}

【问题讨论】:

    标签: c# .net xamarin xamarin.forms


    【解决方案1】:

    以下代码适用于我。

     case OverlayShape.Oval:
         shapeHeight = (float)(shapeHeight * 0.8);
         RectF rect = new RectF(width / 2- shapeWidth / 2, height / 2 - shapeHeight / 2, shapeWidth/2+ width/2 , shapeHeight/2+height/2);
         osCanvas.DrawOval(rect, paint);
         break;
    

    【讨论】:

    • 在 MainPage.xaml 中定义的 OverlayView 上将形状设置为 Oval
    • 不是,其实是椭圆的,可以加断点调试。发生这种情况是因为宽度与高度相同,您可以使它们不同。检查我的更新代码。
    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多