2016-08-23 1 views
0

Comment puis-je faire une vue de caméra personnalisée, comme l'application Messenger, par exemple? Avec possibilité de faire des photos et d'utiliser le flash?Vue de caméra personnalisée UWP C#

Messenger app camera

J'ai essayer d'utiliser des échantillons UWP, mais je ne pouvais pas trouver une solution adaptée
.

+1

Vous pouvez créer votre contrôle personnalisé doté du contrôle CaptureElement pour la prévisualisation et utiliser l'API MediaCapture pour capturer des photos et d'autres tâches liées aux médias. –

Répondre

1

Pour la partie de mise en page, vous pouvez par exemple le code comme ceci:

<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> 

avec possibilité de faire des photos et l'utilisation du flash?

Pour prendre des photos et des vidéos partie, vous pouvez vous référer à la Basic camera app sample officielle, intégrer le code dans votre échantillon puis dans les Tapped et Holding événements de Border:

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

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

Pour activer le flash de la caméra , vous pouvez définir:

_mediaCapture.VideoDeviceController.FlashControl.Enabled = true; 

Je ne sais pas ce qui est le symbole de la caméra pour, donc je suppose que vous voulez activer/désactiver le fl cendres par exemple comme ceci:

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

Et je pense que vous pouvez aussi avoir besoin de personnaliser la mise en page lorsque la commande est prélevée, ou lorsque la vidéo est en cours d'enregistrement et la rotation de la mise en page, et ainsi de suite ...