如何在 Xamarin Forms 中创建与屏幕一样大的矩形?

how can I create a rectangular as big as the screen in Xamarin Forms?

我想在 XAML Xamarin Forms 中制作一个矩形,如何将高度和宽度设置为与 phone 屏幕一样大? HeightRequest 和 widthRequest 似乎不起作用 我想在相机框架周围制作一个厚的透明边框,所以我想制作与屏幕一样大的矩形,我该如何设置它们以适应所有尺寸的屏幕?

<StackLayout>
    <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <xct:CameraView x:Name="cameraView"  CameraOptions="Back" CaptureMode="Photo" OnAvailable="CameraView_OnAvailable">
            <xct:CameraView.Behaviors >
                <xct:EventToCommandBehavior Command="{Binding PhotoCapturedCommand}" EventName="MediaCaptured" />
            </xct:CameraView.Behaviors>
        </xct:CameraView>
        <Rectangle  HeightRequest="1*" Fill="Transparent" Stroke="Blue" Opacity="0.7" StrokeThickness="150"/>

    </Grid>

</StackLayout>

Absolute Layout 有两大优势:

  1. 顾名思义,元素的position/size是绝对的

  2. 您可以“堆叠”元素制作图层

对于此示例,CameraView 将占据屏幕的 100%,“遮罩”将占据 50%。 这些值将与屏幕尺寸成比例(这只是一个例子)。 确保检查每个屏幕图像不失真

<AbsoluteLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
    <xct:CameraView x:Name="cameraView"  CameraOptions="Back" CaptureMode="Photo" OnAvailable="CameraView_OnAvailable" AbsoluteLayout.LayoutBounds="0.5,0.5,1,1" AbsoluteLayout.LayoutFlags="All">
        <xct:CameraView.Behaviors >
            <xct:EventToCommandBehavior Command="{Binding PhotoCapturedCommand}" EventName="MediaCaptured" />
        </xct:CameraView.Behaviors>
    </xct:CameraView>
    <Frame BackgroundColor="Transparent" BorderColor="White" AbsoluteLayout.LayoutBounds="0.5,0.5,0.5,0.5" AbsoluteLayout.LayoutFlags="All"/>
</AbsoluteLayout>

如果需要,您可以将此代码放入任何其他组件中