我可以使用现有的WPF(XAML)控件,对其进行数据绑定并将其转换为可以使用WPF XPS文档查看器显示和打印的XPS文档吗?如果是这样,怎么样?如果没有,我应该如何使用XPS/PDF /等在WPF中进行"报告"?
基本上我想采用现有的WPF控件,数据绑定它以获取有用的数据,然后使其可打印并可供最终用户保存.理想情况下,文档创建将在内存中完成,除非用户专门保存文档,否则不会访问磁盘.这可行吗?
据我所知,从BitmapSource转换为Bitmap的唯一方法是通过不安全的代码...像这样(来自Lesters WPF博客):
myBitmapSource.CopyPixels(bits, stride, 0);
unsafe
{
fixed (byte* pBits = bits)
{
IntPtr ptr = new IntPtr(pBits);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(
width,
height,
stride,
System.Drawing.Imaging.PixelFormat.Format32bppPArgb,ptr);
return bitmap;
}
}
Run Code Online (Sandbox Code Playgroud)
做反过来:
System.Windows.Media.Imaging.BitmapSource bitmapSource =
System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bitmap.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
Run Code Online (Sandbox Code Playgroud)
框架中有更简单的方法吗?它不在那里的原因是什么(如果不是)?我认为它相当实用.
我需要它的原因是因为我使用AForge在WPF应用程序中执行某些图像操作.WPF希望显示BitmapSource/ImageSource,但AForge可以在Bitmaps上运行.
有没有办法获得一个DrawingContext(或类似的)WriteableBitmap?也就是说允许你调用简单的DrawLine/ DrawRectangle/ etc类方法,而不是直接操作原始像素.
打印BitmapImage的最佳方法是什么?我来自System.Drawing的背景,所以我正在考虑将其转换为Bitmap然后打印它,但我认为可能有更好的方法.
谢谢!