C#打印圖片

打印的原理是:生成mdi文件,系統碰到mdi的時候會自動以打印的方式處理。所以,不管用什么模板,什么方式;能在PrintPage事件處理中,生成一張要打印內容的圖片就OK了!

C#實現打印源碼如下:

#region?打印
????????private?void?btnPrint_Click(object?sender,?EventArgs?e)
????????{
????????????//打印預覽
????????????//PrintPreviewDialog?ppd?=?new?PrintPreviewDialog();
????????????PrintDocument?pd?=?new?PrintDocument();
????????????//設置邊距
????????????Margins?margin?=?new?Margins(20,?20,?20,?20);
????????????pd.DefaultPageSettings.Margins?=?margin;
????????????紙張設置默認
????????????//PaperSize?pageSize?=?new?PaperSize("First?custom?size",?800,?600);
????????????//pd.DefaultPageSettings.PaperSize?=?pageSize;
????????????//打印事件設置
????????????pd.PrintPage?+=?new?PrintPageEventHandler(this.pd_PrintPage);
????????????//ppd.Document?=?pd;
????????????//ppd.ShowDialog();
????????????try
????????????{
????????????????pd.Print();
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????MessageBox.Show(ex.Message,?"打印出錯",?MessageBoxButtons.OK,?MessageBoxIcon.Error);
????????????????pd.PrintController.OnEndPrint(pd,?new?PrintEventArgs());
????????????}
????????}
????????//打印事件處理
????????private?void?pd_PrintPage(object?sender,?PrintPageEventArgs?e)
????????{
????????????string?date?=?lblDate.Text;?//當前日期
????????????string?flowId?=?lblFlowId.Text;?//流水號
????????????string?payDate?=?PayDate.Year.ToString()?+?"年"?+?PayDate.Month.ToString()?+?"月";?//應收年月
????????????string?adminId?=?lblAdminId.Text;?//操作員編號
????????????string?baseExpense?=?lblBaseExpense.Text;?//應交基本費用
????????????string?fine?=?lblFine.Text;?//罰款數目
????????????string?upExpense?=?lblUpExpense.Text;?//上月上余
????????????string?actualExpense?=?txtActualExpense.Text;?//實際應交費用
????????????string?chineseExpense?=?DecimalToChinese.ConvertSum(actualExpense);?//實際應交費用的中文大寫

???//讀取圖片模板
????????????Image?temp?=?Image.FromFile(@"Receipts.jpg");
????????????GetResultIntoImage(ref?temp,?UserId,?flowId,?date,?baseExpense,?fine,?upExpense,?actualExpense,?chineseExpense,?payDate,?adminId);
????????????int?x?=?e.MarginBounds.X;
????????????int?y?=?e.MarginBounds.Y;
????????????int?width?=?temp.Width;
????????????int?height?=?temp.Height;
????????????Rectangle?destRect?=?new?Rectangle(x,?y,?width,?height);
????????????e.Graphics.DrawImage(temp,?destRect,?0,?0,?temp.Width,?temp.Height,?System.Drawing.GraphicsUnit.Pixel);
????????}

????????///?<summary>
????????///?將收費結果填充到圖片模板
????????///?</summary>
????????private?void?GetResultIntoImage(
????????????ref?Image?temp,
????????????string?userId,
????????????string?flowId,
????????????string?currentDate,
????????????string?baseExpense,
????????????string?fine,
????????????string?upExpense,
????????????string?actualExpense,
????????????string?chineseExpense,
????????????string?payDate,
????????????string?adminName)
????????{
????????????//讀取圖片模板
????????????Graphics?g?=?Graphics.FromImage(temp);

????????????Font?f?=?new?Font("宋體",?12);
????????????Brush?b?=?new?SolidBrush(Color.Black);
????????????
???//填充數據到圖片模板(位置要在制作圖片模板的時候度量好)
????????????g.DrawImage(temp,?0,?0,?temp.Width,?temp.Height);
????????????g.DrawString(userId,?f,?b,?168,?105);
????????????g.DrawString(UserName,?f,?b,?166,?134);
????????????g.DrawString(flowId,?f,?b,?535,?105);
????????????g.DrawString(currentDate,?f,?b,?535,?134);
????????????g.DrawString(baseExpense,?f,?b,?219,?202);
????????????g.DrawString(fine,?f,?b,?372,?202);
????????????g.DrawString(upExpense,?f,?b,?486,?202);
????????????g.DrawString(actualExpense,?f,?b,?596,?202);
????????????g.DrawString(chineseExpense,?f,?b,?196,?238);
????????????g.DrawString(payDate,?f,?b,?176,?269);
????????????g.DrawString(adminName,?f,?b,?497,?298);

????????????g.Dispose();
????????}
????????#endregion?

轉自:http://hi.baidu.com/zhaogaoyan8/blog/item/d50fbf9a3f66c0bdc9eaf4c7.html

?

?

本文轉自左正博客園博客,原文鏈接:http://www.cnblogs.com/justinw/,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257517.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 里面不等于符號_mysql 不等于 符號寫法

經過測試發現mysql中用<>與!都是可以的&#xff0c;但sqlserver中不識別!,所以建議用<>selece * from jb51 where id<>45sql 里 符號<> 于 ! 的區別<> 與!都是不等于的意思&#xff0c;但是一般都是用<>來代碼不等于因為<>在任何SQL…

Delphi通過ICMP檢測與遠程主機連接

{ ping IP 地址&#xff08;返回false or true&#xff09; 2015-03-23} function PingHost(HostIP: String): Boolean; typePIPOptionInformation ^TIPOptionInformation;TIPOptionInformation packed recordTTL:Byte;TOS:Byte;Flags:Byte;OptionsSize:Byte;OptionsData:PC…

安裝SQL2012出現[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)設置為 1

本人安裝SQL2012出現這個錯誤&#xff0c;找了三天三夜&#xff0c;終于把問題找出來&#xff0c;共享給有需要的人們&#xff0c;不用重新換系統 錯誤如下: 1&#xff0c;此問題是系統.net Framework版本沖突&#xff0c;首先下載.net Framework清理工具&#xff08;如:cleanu…

Java學習筆記之equals和Objects.equals

equals 相信大家就知道&#xff0c;就是比較&#xff0c;我們平時也會在自己定義的類中加入自己重寫的equals用來比較兩個類是否相同&#xff0c;例如這樣 public class Person {private String name; //姓名private int age; //年齡private String nickName; //昵稱public Per…

java限制發送短信次數_使用java發送短信驗證碼碼,出現流量限制怎么辦?急急急...

注冊登錄后需要企業認證,直接在某度上找一張清晰有紅章的企業營業執照,注意要細心點,要看看有沒有水印。我第一次就沒注意上傳了一張有水印的營業執照&#xff0c;從此這個賬號再也沒有審核通過了&#xff0c;后面只能換個賬號。都是后臺人工審核的&#xff0c;比較嚴格。如果時…

GDKOI2015 Day2

P1 題目描述&#xff1a; 給出一個二分圖&#xff0c;選擇互不相交的邊&#xff0c;使得邊覆蓋的點權和最大。 solution&#xff1a; 簡單DP&#xff0c;用樹狀數組維護最大值。 時間復雜度&#xff1a;$O(n \log n) $ P2 題目描述&#xff1a; 給出N個或黑或白的元素&#xff…

寫在SDOI2016Round1前的To Do List

理性的整理了一下自己的不足。 計算幾何啥都不會&#xff0c;字符串類DP毫無練習&#xff0c;數據結構寫的不熟&#xff0c;數論推不出式子&#xff0c;網絡流建模常建殘&#xff1b; 需要達成的任務&#xff1a; 一、網絡流&#xff1a; 熟練網絡流的板子&#xff08;之前一…

XMind入門教程

最近在總結一些框架知識的時候&#xff0c;總找不到一款好的軟件來畫流程圖&#xff0c;后來在網上查找這方面的東西&#xff0c;找到了 XMind,發現用來畫思維導圖還挺好的&#xff0c;看起來思路清晰&#xff0c;美觀。那么便將使用的一些經驗分享給大家。 1、什么是思維導圖&…

標簽與表格

bgcolor 頁面背景色 text 文字顏色 topmargain 上頁邊距 leftmargain 左頁邊距 rightmargain 右頁邊距 bottomargain 下頁邊距 background 背景壁紙 &nbsp 空…

java word轉圖片tiff_不怕復制內容 Word轉存TIFF文件這么玩

辛辛苦苦把Word文件敲好&#xff0c;為了不讓別人復制走內容&#xff0c;只能看文稿&#xff0c;有些人就選擇轉存成PDF文件——但是PDF文件依然可以被編輯&#xff0c;還有什么方法能防范呢&#xff1f;其實在Word 2003之前&#xff0c;用戶可以通過Microsoft Office Document…

item-設置可見性

如果我們想要設置menu中item的可見行&#xff0c;有兩種方式&#xff1a; 1.直接在menu的xml代碼中設置 <menu> <item android:id"id/action_hotknot"android:showAsAction"always"android:icon"drawable/action_mode_hotknot"android:…

IDC:聚焦6+6,抓住數字化轉型商機

今天&#xff0c;IDC中國2015年中國ICT市場趨勢論壇巡回系列的第二站在北京舉行。論壇的主題為“加速創新實現數字化轉型”。 這是最壞的時代&#xff1a;經濟增長乏力、實體經濟不振、傳統行業在被顛覆與重構、IT市場總體增長進入個位數區間、IT第二平臺的領導廠商仍在困境中。…

編寫EL函數

1.建立java類的靜態函數 package chapter4;public class ELFun {public static String processStr(String s){s s.replaceAll("<", "&lt");s s.replaceAll(">", "&gt");s s.replaceAll(" ", " "…

2016.3.22(關系型數據庫簡介,管理數據庫和表)

數據庫的集中式控制有什么優點&#xff1f; 1&#xff1a;降低存儲數據的冗余度 2&#xff1a;更高的數據一致性 3&#xff1a;存儲數據的可以共享 4&#xff1a;可以建立數據庫所遵循的標準 5&#xff1a;便于維護數據完整性 6&#xff1a;能夠實現數據的安全性 存儲數據有哪些…

java前端ajax提交數據_Java 前端使用Ajax通過FormData傳遞文件和表單數據到后臺

提交1&#xff0c;當僅僅想上傳文件到后臺function tijiao(){var file $("#image")[0].files[0];//打印file 為對象console.log(file);var formObj new FormData();formObj.set(image, file);$.ajax({url:test/test3,data:formObj,type: POST,dataType:json,proces…

IBM收購以色列應用發現公司EZSource

6月1日晚消息&#xff0c;IBM宣布對以色列公司EZSource進行收購&#xff0c;交易的具體條款沒有被披露。 EZSource成立于2003年&#xff0c;以自有視覺面板產品聞名&#xff0c;該公司的產品能夠幫助開發人員將重要的大型機應用程序現代化。該公司在以色列、英國、美國、瑞士、…

oracle存儲過程+游標處理select數據

create or replace PROCEDURE UPDATE_RECORDCODE iscursor location_data is select * from location where remark in(952701,9527008,952705);--申明游標serviceCode NUMBER:1; BEGINfor l in location_data loop --遍歷游標BEGIN--業務處理UPDATE SERIAL_CODE SET CUR_NUMB…

POJ 3617 Best Cow Line(最佳奶牛隊伍)

POJ 3617 Best Cow Line Time Limit: 1000MS  Memory Limit: 65536K 【Description】 【題目描述】 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual "Farmer of the Year" competition. In this contest every farmer arranges his cows in a …

js blob php_js發送blob數據, php端接收blob數據

服務器環境CentOs7.4 php7print_r($_FILES)blob結構如下Array([blob] > Array([name] > blob[type] > image/jpeg[tmp_name] > /tmp/phpu37qnN[error] > 0[size] > 1175745))很納悶這個結構為什么沒有圖片數據流&#xff0c;只有圖片的信息悶了幾個小時胡…

eclipse環境配置、快捷鍵及基本操作

Eclipse與MyEclipse的區別 Elipse是一種可擴展的開放源代碼的集成開發環境&#xff0c;具有免費、純java語言編寫、免安裝、擴展性強等特點。 MyElipse在Elipse基礎上追加的功能性插件&#xff0c;對插件收費&#xff0c;在WEB開發中提供強大的系統架構平臺。 工作空間的基本配…