PrintDocument.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. //
  2. // System.Drawing.PrintDocument.cs
  3. //
  4. // Author:
  5. // Dennis Hayes ([email protected])
  6. // Herve Poussineau ([email protected])
  7. //
  8. // (C) 2002 Ximian, Inc
  9. //
  10. using System;
  11. namespace System.Drawing.Printing {
  12. /// <summary>
  13. /// Summary description for PrintDocument.
  14. /// </summary>
  15. public class PrintDocument : System.ComponentModel.Component {
  16. private PageSettings defaultpagesettings;
  17. private PrinterSettings printersettings;
  18. private PrintController printcontroller;
  19. private string documentname;
  20. #if !(NET_1_0)
  21. private bool originAtMargins = false; // .NET V1.1 Beta
  22. #endif
  23. public PrintDocument() {
  24. documentname = "document"; //offical default.
  25. defaultpagesettings = new PageSettings(); // use default values of default printer
  26. printersettings = new PrinterSettings(); // use default values
  27. printcontroller = new StandardPrintController();
  28. }
  29. // properties
  30. public PageSettings DefaultPageSettings{
  31. get{
  32. return defaultpagesettings;
  33. }
  34. set{
  35. defaultpagesettings = value;
  36. }
  37. }
  38. /// <summary>
  39. /// Name of the document, not the file!
  40. /// </summary>
  41. public string DocumentName{
  42. get{
  43. return documentname;
  44. }
  45. set{
  46. documentname = value;
  47. }
  48. }
  49. public PrintController PrintController{
  50. get{
  51. return printcontroller;
  52. }
  53. set{
  54. printcontroller = value;
  55. }
  56. }
  57. public PrinterSettings PrinterSettings{
  58. get{
  59. return printersettings;
  60. }
  61. set{
  62. printersettings = value;
  63. }
  64. }
  65. #if !(NET_1_0)
  66. public bool OriginAtMargins{// .NET V1.1 Beta
  67. get{
  68. return originAtMargins;
  69. }
  70. set{
  71. originAtMargins = value;
  72. }
  73. }
  74. #endif
  75. // methods
  76. public void Print(){
  77. PrintEventArgs printArgs = new PrintEventArgs();
  78. this.OnBeginPrint(printArgs);
  79. if (printArgs.Cancel)
  80. return;
  81. PrintController.OnStartPrint(this, printArgs);
  82. if (printArgs.Cancel)
  83. return;
  84. // while there is more pages
  85. PrintPageEventArgs printPageArgs;
  86. do
  87. {
  88. PageSettings pageSettings = DefaultPageSettings.Clone() as PageSettings;
  89. this.OnQueryPageSettings(new QueryPageSettingsEventArgs(pageSettings));
  90. printPageArgs = new PrintPageEventArgs(
  91. null,
  92. pageSettings.Bounds,
  93. new Rectangle(0, 0, pageSettings.PaperSize.Width, pageSettings.PaperSize.Height),
  94. pageSettings);
  95. Graphics g = PrintController.OnStartPage(this, printPageArgs);
  96. // assign Graphics in printPageArgs
  97. printPageArgs.SetGraphics(g);
  98. if (!printPageArgs.Cancel)
  99. this.OnPrintPage(printPageArgs);
  100. PrintController.OnEndPage(this, printPageArgs);
  101. if (printPageArgs.Cancel)
  102. break;
  103. } while (printPageArgs.HasMorePages);
  104. this.OnEndPrint(printArgs);
  105. PrintController.OnEndPrint(this, printArgs);
  106. }
  107. public override string ToString(){
  108. return "[PrintDocument " + this.DocumentName + "]";
  109. }
  110. // events
  111. protected virtual void OnBeginPrint(PrintEventArgs e){
  112. //fire the event
  113. if (BeginPrint != null)
  114. BeginPrint(this, e);
  115. }
  116. protected virtual void OnEndPrint(PrintEventArgs e){
  117. //fire the event
  118. if (EndPrint != null)
  119. EndPrint(this, e);
  120. }
  121. protected virtual void OnPrintPage(PrintPageEventArgs e){
  122. //fire the event
  123. if (PrintPage != null)
  124. PrintPage(this, e);
  125. }
  126. protected virtual void OnQueryPageSettings(QueryPageSettingsEventArgs e){
  127. //fire the event
  128. if (QuerypageSettings != null)
  129. QuerypageSettings(this, e);
  130. }
  131. public event PrintEventHandler BeginPrint;
  132. public event PrintEventHandler EndPrint;
  133. public event PrintPageEventHandler PrintPage;
  134. public event QueryPageSettingsEventHandler QuerypageSettings;
  135. }
  136. }