方法有下面几种
1, 使用PrintDialog::PrintVisual
public bool PrintVisual(FrameworkElement source)
{
PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
if (printDlg.ShowDialog() == true)
{
printDlg.PrintVisual(source, "PrintVisual");
return true;
}
return false;
}
2, 转成Bitmap图,再打印
double width = source.ActualWidth;
double height = source.ActualHeight;
RenderTargetBitmap renderTarget = new RenderTargetBitmap(
(int)width, (int)height, 96, 96, PixelFormats.Default);
renderTarget.Render(source);
// BitmapSourceをBitmapに転換
System.Drawing.Bitmap bitmap;
MemoryStream outStream = new MemoryStream();
BitmapEncoder pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(renderTarget));
pngEncoder.Save(outStream);
bitmap = new System.Drawing.Bitmap(outStream);
printBridge.print(bitmap);
补充说明,转成位图的格式,这里用了png格式,原因是当控件的背景色是透明(transparent)时,jpg和map格式图像背景色都变成了黑色。。
printBridge的print的实现如下:
int Hp