In the window printing process, we found that the image was still very good, that is, painting on printdocument. Just like painting on canvas, what would you like? First, let's look at the sample code.
Private void button#click (Object sender, routedeventargs e) {var printdocument = new printdocument (); // specifies the printer printdocument. printersettings. printername = "Microsoft XPS document writer"; // sets the page margin printdocument. printersettings. defaultpagesettings. margins. left = 0; printdocument. printersettings. defaultpagesettings. margins. top = 0; printdocument. printersettings. defaultpagesettings. margins. right = 0; printdocument. printersettings. defaultpagesettings. margins. bottom = 0; // set the size. If this parameter is not set, the default size is A4 paper. // the size of A4 paper is 210mm × 297mm, // when the resolution you set is 72 pixels/inch, the size of the A4 paper image pixel is 595x842 // when the resolution you set is 150 pixels/inch, a4 paper size image pixels are 1240x1754 // when you set the resolution to 300 pixels/inch, A4 paper size image pixels are 2479x3508, printdocument. defaultpagesettings. papersize = new papersize ("A4", 595,842); printdocument. printpage + = new printpageeventhandler (printdocument_printpage); try {printdocument. print ();} catch (invalidprinterexception) {} finally {printdocument. dispose () ;}// print method void printdocument_printpage (Object sender, printpageeventargs e) {var printcontent = "Print test"; var printfont = new font ("", 12, system. drawing. fontstyle. regular); var printcolor = system. drawing. brushes. black; var pointy = 10f; // draw the string E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy); // you can specify the fontstyle (bold, skewed, font = new font ("", 12, system. drawing. fontstyle. bold | system. drawing. fontstyle. italic); E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy + = 20f); printfont = new font ("", 12, system. drawing. fontstyle. regular); // draw an image // E. graphics. drawimage (image, 10, 50); // sets the coordinate system scaling // sets the printing coordinate system x to 0.6 times the original value to print E. graphics. scaletransform (0.6f, 1.0f); E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy + = 20f); // restore coordinate system scaling E. graphics. scaletransform (1/0.6f, 1.0f); E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy ++ = 20f); // save and restore the settings of painting var status = E. graphics. save (); E. graphics. scaletransform (0.6f, 1.0f); E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy + = 20f); E. graphics. restore (Status); E. graphics. drawstring (printcontent, printfont, printcolor, 10f, pointy + = 20f); // set the hasmorepages value to true if the next page is displayed. E. hasmorepages = false ;}
There are many methods in graphics. You can refer to this document. Here we only list several common methods,
The effect of printing the above Code is as follows:
The zoom printing method is not suitable for the dot matrix printer. The scaled text cannot be viewed on the dot matrix printer. Later, the generated XPS document is saved in the image format.
The XPs document is in gzip compression format. You can use RAR to decompress it and view it.
The directory structure for generating XPS documents is as follows:
1. fpage is the generated document structure. Other directories are related resource files, such as the fonts font folder and images image folder in resources.
The following is the content generated in 1. fpage. You can see that the format is XML.
<Fixedpage width = "571.04" Height = "808.48" xmlns = "http://schemas.microsoft.com/xps/2005/06" XML: lang = "und"> <! -- Microsoft XPS document converter (mxdc) generated! Version: 0.3.7600.16385 --> <glyphs fill = "# ff000000" fonturi = "/documents/1/resources/fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" fontrenderingemsize = "16.016" stylesimulations = "NONE" originx INX = "12.32" originy = "23.36" indices = "6275; 2464; 9083; 16901 "unicodestring =" Print test "/> <canvas renderoptions. edgemode = "aliased"> <path data = "m 13.92, 29.6 l 79.36, 29.6 79.36, 44.48 13.92, 44.48 Z"> <path. fill> <imagebrush imagesource = "/documents/1/resources/images/1.png" viewbox =" 0, 0, 13.92 "tilemode =" NONE "viewboxunits =" absolute "viewportunits =" absolute "viewport =" 29.6, 65.44, 14.88 "/> </path. fill> </path> <path data = "m 7.84, 48.8 l 45.44, 48.8 45.44, 63.68 7.84, 63.68 Z"> <path. fill> <imagebrush imagesource = "/documents/1/resources/images/2.png" viewbox =, 7.84 "tilemode =" NONE "viewboxunits =" absolute "viewportunits =" absolute "viewport =" 48.8, 37.6, 14.88 "/> </path. fill> </path> </canvas> <glyphs fill = "# ff000000" fonturi = "/documents/1/resources/fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" fontrenderingemsize = "16.016" stylesimulations =" none "originx =" 12.32 "originy =" 80.96 "indices =" 6275; 2464; 9083; 16901 "unicodestring =" Print test "/> <path data =" m 7.84, 87.2 l 45.44, 87.2 45.44, 102.08 7.84, 102.08 Z "> <path. fill> <imagebrush imagesource = "/documents/1/resources/images/2.png" viewbox =, 7.84 "tilemode =" NONE "viewboxunits =" absolute "viewportunits =" absolute "viewport =" 87.2, 37.6, 14.88 "/> </path. fill> </path> <glyphs fill = "# ff000000" fonturi = "/documents/1/resources/fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" fontrenderingemsize = "16.016" stylesimulations = "NONE" originx ations = ""12.32" originy = "119.36" indices = "6275; 2464; 9083; 16901 "unicodestring =" Print test "/> </fixedpage>
If you want to operate the XPS document, you can reference the reachframework. dll, system. Windows. XPS. Packaging namespace.
It encapsulates the operation methods of the XPS document. Here we will introduce some knowledge of XPS.
By the way, paste a detailed document for your reference.
Http://blog.csdn.net/gkq8124372/article/details/7494272