微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin 自定义渲染器拍照

如何解决Xamarin 自定义渲染器拍照

我想使用 Xamarin 表单自定义渲染器拍照。 我使用 Custom Renderer Sample 并在 Xaml 中添加一个名为 'btnTakePicture' 的按钮,但我不知道如何在按钮单击事件上拍照。 我想在屏幕的一部分显示相机。 我还检查了 Xam.Media.Plugin,但无法拍照。

Xaml 代码

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:local="clr-namespace:Customrenderer;assembly=Customrenderer"
             x:Class="Customrenderer.frmCamera"
             Title="Main Page">
    <Grid>
        <Grid.RowDeFinitions>
            <RowDeFinition Height="1*"/>
            <RowDeFinition Height="7*"/>
            <RowDeFinition Height="2*"/>
        </Grid.RowDeFinitions>
        <Grid Grid.Row="0">
            <Label Text="Camera Preview"/>
        </Grid>
        <Grid Grid.Row="1">
            <local:CameraPreview Camera="Rear" x:Name="cmrPreview"
                             HorizontalOptions="FillAndExpand"
                             VerticalOptions="FillAndExpand"  Background="black"/>
        </Grid>
        <Grid Grid.Row="2">
            <Grid.ColumnDeFinitions>
                <ColumnDeFinition Width="1*"/>
                <ColumnDeFinition Width="1*"/>
            </Grid.ColumnDeFinitions>
            <Button x:Name="btnChangeCamera" Text="Switch Camera" Clicked="btnChangeCamera_Clicked"/>
            <Button x:Name="btnTakePicture" Text="Take" Grid.Column="1" Clicked="btnTakePicture_Clicked"/>
        </Grid>
        <Frame></Frame>
    </Grid>
</ContentPage>

C# 代码

using System.IO;
using Xamarin.Essentials;
using Xamarin.Forms;

namespace Customrenderer
{
    public partial class frmCamera : ContentPage
    {
        public frmCamera()
        {
            InitializeComponent();
        }

        private void btnChangeCamera_Clicked(object sender,System.EventArgs e)
        {
            if (cmrPreview.Camera == CameraOptions.Rear)
                cmrPreview.Camera = CameraOptions.Front;
            else
                cmrPreview.Camera = CameraOptions.Rear;

        }

        bool blnIsFlashLight = false;
        private void btnFlashLight_Clicked(object sender,System.EventArgs e)
        {
            if (blnIsFlashLight)
            {
                Flashlight.TurnOffAsync();
                blnIsFlashLight = false;
            }
            else
            {
                Flashlight.TurnOnAsync();
                blnIsFlashLight = true;
            }
        }

        private void btnTakePhoto_Clicked(object sender,System.EventArgs e)
        {

        }
    }
}

here is my project Screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。