捕获元素不使用父控件的空间

时间:2015-04-28 12:44:25

标签: xaml windows-phone-8.1

我正在尝试使用捕获元素创建一个页面,并在顶部覆盖一个按钮来拍摄照片。

我遇到的问题是,捕获元素不会耗尽整个屏幕。上面和下面都有酒吧。

<Grid>    
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="100"/>
    </Grid.RowDefinitions>

    <CaptureElement 
            Grid.Row="0"
               x:Name="capPreview"                  
                Stretch="Uniform"
                HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch"
                Tapped="capPreview_Tapped"
        />


    <Button Content="Submit"
                      HorizontalAlignment="Center"
                        Grid.Row="1"                          
                      x:Name="btnTakePicture"
                      Click="btnTakePicture_Click">
        <Button.Background>
            <SolidColorBrush Color="Black" Opacity="100"/>
        </Button.Background>
        <Button.BorderBrush>
            <SolidColorBrush Color="White"/>
        </Button.BorderBrush>
    </Button>
</Grid>

编辑:我已经使用了后面的代码来旋转捕获元素;在这样做时,元素现在只有一个盒子而不是顶部和底部。

<CaptureElement 
                Grid.Row="0"
                   x:Name="capPreview"                    
                   Tapped="capPreview_Tapped"
            />  

如果没有硬编码高度和宽度值,我就没有想法了。

CaptureElement

3 个答案:

答案 0 :(得分:1)

deos 使用整个屏幕,问题是预览的方向与屏幕的方向不同。

MediaCapture有一个方法SetPreviewRotation来处理这个问题。

答案 1 :(得分:1)

它适合我:)只是网格和Strech,如果你想拥有焦点只是在CaptureElement外面制作透明网格

<Grid>
    <Grid Tapped="SetFocus">
        <CaptureElement x:Name="CaptureElement" Stretch="UniformToFill"/>
    </Grid>
    <Grid VerticalAlignment="Bottom">
        <Button x:Name="SaveButton" Foreground="Transparent" IsDoubleTapEnabled="False" Width="48" Height="48" Background="Transparent" BorderBrush="Transparent"
                Click="OnSaveButtonClicked" HorizontalAlignment="Stretch" Margin="12,0">
        </Button>
    </Grid>
</Grid>

答案 2 :(得分:-1)

试试这个,它会直接用按钮点击

捕获

 private async void Button_Click_3(object sender, RoutedEventArgs e)
        {
            Uri u = new Uri("ms-data:///local");
            StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("Photo.jpg");

            IRandomAccessStream st = await file.OpenAsync(FileAccessMode.Read);

            BitmapImage image = new BitmapImage();
            image.SetSource(st);
            img.Source = image;





        }
<CaptureElement Name="element" Height="600"/>
        <StackPanel>
        
            
            <Button Content="Capture Image" Click="Button_Click_3"/>
            
        </StackPanel>
        
        <Image Name="img" Margin="0,0,0,0"/>