public static DocumentPaginator GetDocumentPaginator(PrintConfig config) { switch (config.DataSourceType) { case DataSourceTypeDefine.DataTable: return(new DataTableDocumentPaginator(config)); case DataSourceTypeDefine.Image: return(new ImageDocumentPaginator(config)); case DataSourceTypeDefine.Control: return(new ImageDocumentPaginator(config)); default: return(null); } }
public static void PrintControl(FrameworkElement element) { //将控件转化为图片... var rt = new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight, 96, 96, PixelFormats.Pbgra32); rt.Render(element); var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(rt)); var bitmapImage = new BitmapImage(); using (Stream stream = new MemoryStream()) { encoder.Save(stream); stream.Seek(0, SeekOrigin.Begin); stream.Position = 0; bitmapImage.BeginInit(); bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.StreamSource = stream; bitmapImage.EndInit(); } var config = new PrintConfig() { DataSource = bitmapImage, DataSourceType = DataSourceTypeDefine.Image }; var viewModel = new PrintPreviewViewModel(config); var view = new PrintPreviewView(viewModel); view.ShowDialog(); }