Пользовательский вид камеры UWP C #

Как я могу настроить вид камеры, например, как в приложении Messenger? С возможностью фотографирования и использования вспышки?

Камера приложения для обмена сообщениями

Я пытаюсь использовать образцы UWP, но не могу найти подходящего решения.


person AlIon    schedule 23.08.2016    source источник
comment
Вы можете создать свой настраиваемый элемент управления, который имеет элемент управления CaptureElement для предварительного просмотра и может использовать MediaCapture API для захвата фотографий и других задач, связанных с мультимедиа.   -  person Zea Shah    schedule 23.08.2016


Ответы (1)


Для части макета вы можете, например, такой код:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <CaptureElement Name="PreviewControl" Stretch="Uniform" />
    <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Bottom"
                Orientation="Vertical" Background="Transparent" Padding="10,10">
        <TextBlock Text="Hold for Video, tap for photo" FontSize="15" Foreground="White"
                   HorizontalAlignment="Center" />
        <Grid Margin="0,5,0,0" Background="#7FD3D3D3" Padding="10,10">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <TextBlock Text="Cancel" FontSize="15" Foreground="White" Margin="10,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
            <Border Height="50" Width="50" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"
                    CornerRadius="25" BorderBrush="White" BorderThickness="2" Tapped="Border_Tapped" Holding="Border_Holding">
                <Ellipse Width="40" Height="40" Fill="White" />
            </Border>
            <SymbolIcon Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" Symbol="Camera" Foreground="White"
                        Tapped="SymbolIcon_Tapped" />
        </Grid>
    </StackPanel>
</Grid>

С возможностью фотографирования и использования вспышки?

Для съемки фото и видео вы можете обратиться к официальной базовой камере пример приложения, интегрируйте код в свой образец, а затем в события Tapped и Holding Border:

private async void Border_Tapped(object sender, TappedRoutedEventArgs e)
{
    await TakePhotoAsync();
}

private async void Border_Holding(object sender, HoldingRoutedEventArgs e)
{
    await StartRecordingAsync();
}

Чтобы включить вспышку камеры, вы можете установить:

_mediaCapture.VideoDeviceController.FlashControl.Enabled = true; 

Я не знаю, для чего нужен символ камеры, поэтому предполагаю, что вы хотите включить / отключить вспышку, например, следующим образом:

private void SymbolIcon_Tapped(object sender, TappedRoutedEventArgs e)
{
    _mediaCapture.VideoDeviceController.FlashControl.Enabled = !_mediaCapture.VideoDeviceController.FlashControl.Enabled;
}

И я думаю, вам также может потребоваться настроить макет при касании элемента управления, или когда записывается видео, вращение макета и так далее ...

person Grace Feng    schedule 24.08.2016