Чтобы создать Распечатку, вы должны будете написать в свой PrintDocument, используя GDI. В действительности нет ничего встроенного. Вы могли бы сделать снимок экрана (код ниже).
Экспорт данных в CSV лучше всего выполнять самостоятельно. Просто создайте / откройте поток файлов и запишите в него все, что вы хотите.
Снимок экрана: требуется PInvoke для BitBlt и GetDC
const int SRCCOPY = 0x00CC0020;
[DllImport("coredll.dll")]
private static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
[DllImport("coredll.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);
public Bitmap ScreenCapture(string fileName) {
Bitmap bitmap = new Bitmap(this.Width, this.Height);
using (Graphics gScr = Graphics.FromHdc(GetDC(IntPtr.Zero))) { // A Zero Pointer will Get the screen context
using (Graphics gBmp = Graphics.FromImage(bitmap)) { // Get the bitmap graphics
BitBlt(gBmp.GetHdc(), 0, 0, this.Width, this.Height, gScr.GetHdc(), this.Left, this.Top, SRCCOPY); // Blit the image data
}
}
bitmap.Save(fileName, ImageFormat.Png); //Saves the image
return bitmap;
}
[Update]:
Если вы хотите, чтобы изображение сохранялось в определенном месте, отправьте полный путь с именем файла (т.е. \\Windows\Temp\screenShot.png
).
Если вы хотите исключить элементы управления, уменьшайте this.Width
, this.Height
, this.Left
и this.Right
до тех пор, пока не получите размер, соответствующий области, которая работает.
В заключение, если вы хотите, чтобы Bitmap
использовал в памяти, просто сохраните его и используйте по мере необходимости. Пример: * +1028 *
panel1.Image = ScreenCapture ("image.png");
panel1.BringToFront ();
Надеюсь, это поможет.