C#實現(xiàn)自定義打印文字和圖片的示例代碼
C#中打印其實就是自己繪圖+調(diào)用系統(tǒng)打印函數(shù),于是便有了以下操作
1.調(diào)用打印機設(shè)置
如果你想在打印前設(shè)置打印機屬性(或者切換打印機),請務(wù)必添加這段代碼,否則電腦會直接按照預(yù)設(shè)的設(shè)置進行打?。ù蛴C都沒法選)
//打印機設(shè)置 PrintDialog printDialog = new PrintDialog(); printDialog.Document = ptDoc; printDialog.ShowDialog();
ptDoc就是打印的文件內(nèi)容,會在后面解釋
2.關(guān)聯(lián)文檔
等于我們需要新建一個空白的畫布,然后把我們需要的文字,圖片,線條依次擺上去
PrintDocument ptDoc = new PrintDocument(); ptDoc.DocumentName = "測試文件";//在隊列中顯示的名字 ptDoc.PrintPage += PtDoc_PrintPage;//關(guān)聯(lián)內(nèi)容生成方法
3.繪制內(nèi)容
本次測試的內(nèi)容分為:橫排文字,豎排文字,圖片,具體內(nèi)容和位置可以通過修改參數(shù)進行調(diào)整
private void PtDoc_PrintPage(object sender, PrintPageEventArgs e) { e.Graphics.Clear(Color.White); // 開始繪制文檔 // 默認為橫排文字 e.Graphics.DrawString("標題:打印測試", new Font(new FontFamily("宋體"), 40, FontStyle.Bold), System.Drawing.Brushes.Red, 170, 10); // 橫線 e.Graphics.DrawLine(Pens.Black, 20, 110, 800, 110); // 豎排文字 e.Graphics.DrawString("內(nèi)容", new Font(new FontFamily("宋體"), 14, FontStyle.Bold), System.Drawing.Brushes.Black, 20, 120, new StringFormat(StringFormatFlags.DirectionVertical)); e.Graphics.DrawString( this.txtName.Text, new Font(new FontFamily("宋體"), 14, FontStyle.Bold), System.Drawing.Brushes.Black, 20, 200); //e.Graphics.DrawImage(Image.FromFile(Path), 20, 250, 800, 100); //會造成失真 Image imgsample = Image.FromFile(Path); Point pt = Zoom(imgsample.Width, imgsample.Height, 200); e.Graphics.DrawImage(imgsample, 20, 250, pt.X, pt.Y);//直接打印可能出現(xiàn)太大打印不下 }
同時直接打印圖片的話可能造成圖片太大,可以寫一個縮放方法來限制圖片的最大尺寸
private Point Zoom(int x, int y,int maxWidth) { Point pt = new Point(x, y); while (pt.X > maxWidth) { pt.X /= 2; pt.Y /= 2; } return pt; }
最后結(jié)果如下
到此這篇關(guān)于C#實現(xiàn)自定義打印文字和圖片的示例代碼的文章就介紹到這了,更多相關(guān)C# 自定義打印文字和圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
AOP從靜態(tài)代理到動態(tài)代理(Emit實現(xiàn))詳解
AOP為Aspect Oriented Programming的縮寫,意思是面向切面編程的技術(shù)。下面這篇文章主要給大家介紹了關(guān)于AOP從靜態(tài)代理到動態(tài)代理(Emit實現(xiàn))的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-09-09C#實現(xiàn)Excel合并單元格數(shù)據(jù)導(dǎo)入數(shù)據(jù)集詳解
這篇文章主要為大家詳細介紹了C#如何實現(xiàn)Excel合并單元格數(shù)據(jù)導(dǎo)入數(shù)據(jù)集,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下2024-01-01