图像控制源(C#UWP)

图像控制源(C#UWP),c#,visual-studio,xaml,uwp,C#,Visual Studio,Xaml,Uwp,我正在为uwp编写应用程序 我有PCL,这里是打开相机、拍照和保存的方法 下面是PCL中方法的代码 public async void PhotoTake() { CameraCaptureUI captureUI = new CameraCaptureUI(); captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg; captureUI.PhotoSettings

我正在为uwp编写应用程序

我有PCL,这里是打开相机、拍照和保存的方法

下面是PCL中方法的代码

public async void PhotoTake()
    {
        CameraCaptureUI captureUI = new CameraCaptureUI();
        captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
        captureUI.PhotoSettings.CroppedSizeInPixels = new Size(200, 200);
        StorageFile photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);

        if (photo == null)
        {

            return;
        }
        StorageFolder destinationFolder =
        await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder", CreationCollisionOption.OpenIfExists);
        await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting);
        await photo.DeleteAsync();

        IRandomAccessStream stream = await photo.OpenAsync(FileAccessMode.Read);
        BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
        SoftwareBitmap softwareBitmap = await decoder.GetSoftwareBitmapAsync();
        SoftwareBitmap softwareBitmapBGR8 = SoftwareBitmap.Convert(softwareBitmap,
        BitmapPixelFormat.Bgra8,
        BitmapAlphaMode.Premultiplied);

        SoftwareBitmapSource bitmapSource = new SoftwareBitmapSource();
        await bitmapSource.SetBitmapAsync(softwareBitmapBGR8);


    }
在xaml中,我有图像。我需要在此图像中显示照片

据我所知,我需要这样编写smth
imageControl.Source=bitmapSource

但是当我写的时候,我的
错误CS0103当前上下文中不存在名称“bitmapSource”

这是我的xaml.cs文件

 public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

         CameraOpening cam = new CameraOpening();
         cam.PhotoTake();
        imageControl.Source = bitmapSource;

    }


}
我怎么会犯这个错误


Thank的

bitmapSource
是方法中的局部变量。您无法从外部访问它

将方法的返回类型从
void
更改为
Task
,并在创建位图后删除图像文件:

public async Task<SoftwareBitmapSource> PhotoTake()
{
    var captureUI = new CameraCaptureUI();
    captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
    captureUI.PhotoSettings.CroppedSizeInPixels = new Size(200, 200);

    var photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
    var bitmapSource = new SoftwareBitmapSource();

    if (photo != null)
    {
        var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(
            "ProfilePhotoFolder", CreationCollisionOption.OpenIfExists);

        await photo.CopyAsync(folder, "ProfilePhoto.jpg",
            NameCollisionOption.ReplaceExisting);

        using (var stream = await photo.OpenAsync(FileAccessMode.Read))
        {
            var decoder = await BitmapDecoder.CreateAsync(stream);
            var softwareBitmap = await decoder.GetSoftwareBitmapAsync();
            var softwareBitmapBGR8 = SoftwareBitmap.Convert(
                softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);

            await bitmapSource.SetBitmapAsync(softwareBitmapBGR8);
        }

        await photo.DeleteAsync();
    }

    return bitmapSource;
}

bitmapSource
是方法中的局部变量。您无法从外部访问它

将方法的返回类型从
void
更改为
Task
,并在创建位图后删除图像文件:

public async Task<SoftwareBitmapSource> PhotoTake()
{
    var captureUI = new CameraCaptureUI();
    captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
    captureUI.PhotoSettings.CroppedSizeInPixels = new Size(200, 200);

    var photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
    var bitmapSource = new SoftwareBitmapSource();

    if (photo != null)
    {
        var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(
            "ProfilePhotoFolder", CreationCollisionOption.OpenIfExists);

        await photo.CopyAsync(folder, "ProfilePhoto.jpg",
            NameCollisionOption.ReplaceExisting);

        using (var stream = await photo.OpenAsync(FileAccessMode.Read))
        {
            var decoder = await BitmapDecoder.CreateAsync(stream);
            var softwareBitmap = await decoder.GetSoftwareBitmapAsync();
            var softwareBitmapBGR8 = SoftwareBitmap.Convert(
                softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);

            await bitmapSource.SetBitmapAsync(softwareBitmapBGR8);
        }

        await photo.DeleteAsync();
    }

    return bitmapSource;
}

老兄,你有没有试着先研究C?老兄,你有没有试着先研究C?