我正在創建一個圖表設計器的WPF應用程序,它只保存爲.xml,我還想將其導出爲png。在WPF中保存圖片C#出現錯誤System.UnauthorizedAccessException發生在mscorlib.dll中
我有這段代碼。
public static void ExportToPng(UIElement target, string ImagePath)
{
// Prepare target-layout
Size size = target.RenderSize;
target.Measure(size);
target.Arrange(new Rect(size));
// Render diagram to bitmap
RenderTargetBitmap renderBitmap =
new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96, 96,
PixelFormats.Pbgra32);
renderBitmap.Render(target);
// Convert bitmap to png
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
我搜索過的代碼,它說:
的最後一步是將圖像保存到磁盤(或你喜歡的地方)。 PngBitmapEncoder提供了保存到流中的可能性。在本教程中,我們將StreamWriter傳遞給它,以將圖像保存到我們傳入方法的路徑中。下面的代碼添加到方法ExportToPng:
using (FileStream fileStream = new FileStream(ImagePath, FileMode.Create))
{
encoder.Save(fileStream);
}
}
}
我要問,如果確實需要或不是本FILESTREAM。我很抱歉,我只是新手在C#和WPF。
我把它也因爲它是這麼說的,最後一部分是這樣的:
有了這個,你有圖表出口的方法完成。現在如何以及在哪裏可以稱它?我先回答第一個問題。你可以這樣調用:
SelectionService.ClearSelection(); // Unselect DesignerItems
DiagramDesignerExporter.ExportToPng(<DesignerCanvas-Object>, "<YourFullFilePath>");
它還說:如果你要撥打的ExportToPng法
很大程度上取決於你建立什麼樣的應用。如果您只是增強原始的WPF關係圖設計器,那麼您很可能會在功能區工具欄中添加一個新按鈕,並將新方法添加到文件DesignerCanvas.Commands.cs中。如果你這樣做,你可以這樣調用方法:
DiagramDesignerExporter.ExportToPng(this, <YourFullFilePath>);
我也想問一下,如果我想放置在。我認爲這是我的筆記本電腦上的一個地方。所以我把它叫做是這樣的:
DiagramDesignerExporter.ExportToPng(this, "C:/Users/Sony/Pictures");
我運行它,我有這樣的錯誤:
An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
Additional information: Access to the path 'C:\Users\Sony\Pictures' is denied.
我想這樣稱呼它:
DiagramDesignerExporter.ExportToPng(this, "C:/Users/Sony/Pictures");
,但它不是運行。我希望有人能幫助我解決這個問題。謝謝。
是。除了索尼,我沒有其他用戶。 –