我希望能夠使用其他UIElements打印圖像。我有一個固定頁面的實例,並試圖添加圖像像這樣將圖像添加到WPF中的固定頁面
// Basic printing stuff
var printDialog = new PrintDialog();
var fixedDocument = new FixedDocument();
fixedDocument.DocumentPaginator.PageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
FixedPage page = new FixedPage();
page.Width = fixedDocument.DocumentPaginator.PageSize.Width;
page.Height = fixedDocument.DocumentPaginator.PageSize.Height;
Image img = new Image();
// PrintIt my project's name, Img folder
var uriImageSource = new Uri(@"/PrintIt;component/Img/Stuff.png", UriKind.RelativeOrAbsolute);
img.Source = new BitmapImage(uriImageSource);
img.Width = 100;
img.Height = 100;
page.Children.Add(img);
PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(page);
fixedDocument.Pages.Add(pageContent);
// Print me an image please!
_printDialog.PrintDocument(fixedDocument.DocumentPaginator, "Print");
它給了我一個白紙。我想知道爲什麼,因爲其他UIElements(如TextBox,Grid,Rect)沒有問題。我錯過了什麼?
謝謝!
PS好的,我找到了另一個解決方案。我不知道爲什麼,但與該Uri一張照片正確加載
var uri = new Uri("pack://application:,,,/Img/Stuff.png");
隨着StreamSource的,它的工作!謝謝你,兄弟。 – Semuserable 2012-08-07 20:41:33
只需要注意:在「大」(=大量頁面)上運行此代碼的FixedDocument時,代碼不會拋出OutOfMemoryExceptions。他們只是被忽略,圖像不顯示。該行爲是不同的這個代碼:BitmapFrame bitImage = BitmapFrame.Create(新的FileStream(文件名,FileMode.Open,FileAccess.Read),BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.OnLoad); – 2016-02-04 09:11:12