powolne drukowanie i podgląd wydruku

0

Witam,
mam prosty testowy programik napisany w celu uporania się z problemem raz wolnego a kiedy indziej szybkiego drukowania czy podglądu wydruku.
Środowisko: MS Visual C# Express 2010.
Jedna formatka a na niej komponent PrintDocument oraz menu z 3-ema poleceniami (page setup, print preview, print).

A oto kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace WFAPrintTest {
	public partial class Form1 : Form {
		private PageSettings pgSettings = new PageSettings();
		private PrinterSettings prtSettings = new PrinterSettings();
		public Form1() {
			InitializeComponent();
		}

		private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e) {
			PageSetupDialog pageSetupDialog = new PageSetupDialog();
			pageSetupDialog.PageSettings = pgSettings;
			pageSetupDialog.PrinterSettings = prtSettings;
			pageSetupDialog.ShowDialog();
		}

		private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) {
			printDoc.DefaultPageSettings = pgSettings;
			printDoc.PrinterSettings = prtSettings;
			PrintPreviewDialog dlg = new PrintPreviewDialog();
			dlg.Document = printDoc;
			dlg.ShowDialog();
		}

		private void printToolStripMenuItem_Click(object sender, EventArgs e) {
			printDoc.DefaultPageSettings = pgSettings;
			printDoc.PrinterSettings = prtSettings;
			PrintDialog dlg = new PrintDialog();
			dlg.Document = printDoc;
			if (dlg.ShowDialog() == DialogResult.OK) {
				printDoc.Print();
			}
		}

		private int pageIndex = 0;
		private int pageCount = 50;

		private void printDoc_BeginPrint(object sender, PrintEventArgs e) {
			printDoc.DocumentName = "test";
			pageIndex = 0;
		}

		private void printDoc_PrintPage(object sender, PrintPageEventArgs e) {
			string s = string.Format("page {0} of {1}", pageIndex+1, pageCount);
			Font font = new Font("Arial", 40, FontStyle.Bold);
			Brush brush = new SolidBrush(Color.Blue);
			StringFormat stringFormat = new StringFormat();
			stringFormat.Alignment = StringAlignment.Center;
			stringFormat.LineAlignment = StringAlignment.Center;
			int left = e.PageBounds.Width / 2;
			int top = e.PageBounds.Height / 2;
			e.Graphics.DrawString(s, font, brush, left, top, stringFormat);

			pageIndex++;
			e.HasMorePages = pageIndex < pageCount;
		}
	}
}

W skrócie: drukowanie 50-u stron a na nich tylko napis po środku z licznikiem i liczbą stron.

A teraz problem:
po uruchomieniu programu i wybraniu polecenia drukowania lub podglądu wydruku, obojętnie czy raz czy 100 razy, strony są tworzone w tempie 2-3/s,
natomiast gdy wybiorę polecenie ustawienia strony i zatwierdzę ten dialog przez 'OK' to od tej pory tworzenie stron odbywa się w tempie ok. 15-20/s !!!

Próbowałem podejrzeć co się dzieje wewnątrz obiektu pgSettings, przez zrzucenie jego zawartości do pliku tekstowego dzięki serializacji, następnie porównanie otrzymanych plików przed i po wyjściu z dialogu PageSetupDialog.
Podglądałem też zawartość pgSettings i prtSettings w oknie 'Watch' (chyba do 5-ego poziomu zagłębienia w strukturę), też przed i po wyjściu z dialogu PageSetupDialog.
Niestety nie zauważyłem niczego co mogłoby się zmienić dzięki kliknięciu 'OK' w dialogu 'Ustawienia strony'.

Czy ktoś się już z tym spotkał, wie o co chodzi?

Ps. na forum 'social.msdn' na ten temat cisza oraz jeden nie zakończony pozytywnie wątek (użytkownika Coder_Cool) ...

0

napisałem o tworzeniu stron, nie o ich już drukowaniu, jeżeli chodzi o drukowanie to jest to etap pomiędzy kliknięciem OK w oknie 'Drukowanie' a przejęciem przygotowanego obrazu wydruku przez sterownik drukarki, a w przypadku podglądu wydruku jest to etap po pokazaniu formy podglądu czyli po PrintPreviewDialog.ShowDialog(), a przed ukazaniem się w niej obrazu wydruku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1