由于未经授权的访问异常,无法使用C#将文件写入文件

时间:2016-04-14 14:24:32

标签: c# wpf xaml

我有这段代码:

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(525, 50, 96, 96, PixelFormats.Pbgra32);
renderTargetBitmap.Render(/* controlName */);
PngBitmapEncoder pngImage = new PngBitmapEncoder();
pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
using (Stream fileStream = File.Create(Environment.CurrentDirectory)
{
    pngImage.Save(fileStream);
}

它应该从我的XAML中获取一个控件并创建它的“屏幕截图”,然后将其保存到图像文件中。但无论我尝试传递给File.Create方法的目录是什么,我都会得到System.UnauthorizedAccessException

如何解决?感谢。

注意:我曾尝试以管理员身份运行Visual Studio,但无效。

2 个答案:

答案 0 :(得分:2)

您必须将文件名(可选择包含路径)传递给File.Create,例如:

File.Create("MyImage.png")

var path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "MyImage.png");

using (var fileStream = FileFile.Create(path))
{
    pngImage.Save(fileStream);
}

答案 1 :(得分:-1)

要摆脱黑色图像,请尝试在使用后手动处理对象。示例如下所示。

private void button_Click(object sender, RoutedEventArgs e)
    {
        RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(525, 50, 96, 96, PixelFormats.Pbgra32);
        renderTargetBitmap.Render(btn_StartStop);
        PngBitmapEncoder pngImage = new PngBitmapEncoder();
        pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
        FileStream stream = new FileStream("screenshot.png", FileMode.Create);
        pngImage.Save(stream);
        stream.Dispose();            
    }