溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用C#做Screen Capture程序

發(fā)布時(shí)間:2021-12-02 11:33:29 來源:億速云 閱讀:164 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么用C#做Screen Capture程序”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用C#做Screen Capture程序”吧!

在掌握了一些C#源代碼后,可以得到用C#做Screen Capture程序的源代碼(Capture.cs),具體如下:

  1. using System ;  

  2. using System.Drawing ;  

  3. using System.Collections ;  

  4. using System.ComponentModel ;  

  5. using System.Windows.Forms ;  

  6. using System.Data ;  

  7. using System.Drawing.Imaging ;  

  8. using System.IO ;  

  9. //導(dǎo)入在程序中使用到的名稱空間  

  10. public class Capture : Form  

  11. {  

  12. private System.ComponentModel.Container components = null ;  

  13. private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ;  

  14. private Bitmap MyImage = null ;  

  15. private NotifyIcon TrayIcon ;  

  16. private ContextMenu notifyiconMnu ;  

  17. public Capture ( )  

  18. {  

  19. //初始化窗體中使用到的組件  

  20. InitializeComponent ( ) ;  

  21. }  

  22. protected override void OnActivated ( EventArgs e )  

  23. {  

  24. this.Hide ( ) ;  

  25. }  

  26. [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]  

  27. private static extern bool BitBlt (  

  28. IntPtr hdcDest , //目標(biāo)設(shè)備的句柄  

  29. int nXDest , // 目標(biāo)對(duì)象的左上角的X坐標(biāo)  

  30. int nYDest , // 目標(biāo)對(duì)象的左上角的X坐標(biāo)  

  31. int nWidth , // 目標(biāo)對(duì)象的矩形的寬度  

  32. int nHeight , // 目標(biāo)對(duì)象的矩形的長度  

  33. IntPtr hdcSrc , // 源設(shè)備的句柄  

  34. int nXSrc , // 源對(duì)象的左上角的X坐標(biāo)  

  35. int nYSrc , // 源對(duì)象的左上角的X坐標(biāo)  

  36. System.Int32 dwRop // 光柵的操作值  

  37. ) ;  

  38. [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]  

  39. private static extern IntPtr CreateDC (  

  40. string lpszDriver , // 驅(qū)動(dòng)名稱  

  41. string lpszDevice , // 設(shè)備名稱  

  42. string lpszOutput , // 無用,可以設(shè)定位"NULL"  

  43. IntPtr lpInitData // 任意的打印機(jī)數(shù)據(jù)  

  44. ) ;  

  45. public void capture ( object sender , System.EventArgs e )  

  46. {  

  47. this.Visible = false ;  

  48. IntPtr dc1 = CreateDC ( "DISPLAY" , null , null , ( IntPtr ) null ) ;  

  49. //創(chuàng)建顯示器的DC  

  50. Graphics g1 = Graphics.FromHdc ( dc1 ) ;  

  51. //由一個(gè)指定設(shè)備的句柄創(chuàng)建一個(gè)新的Graphics對(duì)象  

  52. MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , 
    Screen.PrimaryScreen.Bounds.Height , g1 ) ;  

  53. //根據(jù)屏幕大小創(chuàng)建一個(gè)與之相同大小的Bitmap對(duì)象  

  54. Graphics g2 = Graphics.FromImage ( MyImage ) ;  

  55. //獲得屏幕的句柄  

  56. IntPtr dc3 = g1.GetHdc ( ) ;  

  57. //獲得位圖的句柄  

  58. IntPtr dc2 = g2.GetHdc ( ) ;  

  59. //把當(dāng)前屏幕捕獲到位圖對(duì)象中  

  60. BitBlt ( dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width , 
    Screen.PrimaryScreen.Bounds.Height , dc3 , 0 , 0 , 13369376 ) ;  

  61. //把當(dāng)前屏幕拷貝到位圖中  

  62. g1.ReleaseHdc ( dc3 ) ;  

  63. //釋放屏幕句柄  

  64. g2.ReleaseHdc ( dc2 ) ;  

  65. //釋放位圖句柄  

  66. MyImage.Save ( "c:\\MyJpeg.jpg" , ImageFormat.Jpeg ) ;  

  67. MessageBox.Show ( "已經(jīng)把當(dāng)前屏幕保存到C:\\MyJpeg.jpg文件中!" ) ;  

  68. this.Visible = true ;  

  69. }  

  70. public void ExitSelect ( object sender , System.EventArgs e )  

  71. {  

  72. //隱藏托盤程序中的圖標(biāo)  

  73. TrayIcon.Visible = false ;  

  74. //關(guān)閉系統(tǒng)  

  75. this.Close ( ) ;  

  76. }  

  77. //清除程序中使用過的資源  

  78. public override void Dispose ( )  

  79. {  

  80. base.Dispose ( ) ;  

  81. if ( components != null )  

  82. components.Dispose ( ) ;  

  83. }  

  84. private void InitializeComponent ( )  

  85. {  

  86. //設(shè)定托盤程序的各個(gè)屬性  

  87. TrayIcon = new NotifyIcon ( ) ;  

  88. TrayIcon.Icon = mNetTrayIcon ;  

  89. TrayIcon.Text = "用C#做Screen Capture程序" ;  

  90. TrayIcon.Visible = true ;  

  91. //定義一個(gè)MenuItem數(shù)組,并把此數(shù)組同時(shí)賦值給ContextMenu對(duì)象  

  92. MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;  

  93. mnuItms [ 0 ] = new MenuItem ( ) ;  

  94. mnuItms [ 0 ] .Text = "捕獲當(dāng)前屏幕!" ;  

  95. mnuItms [ 0 ] .Click += new System.EventHandler ( this.capture ) ;  

  96. mnuItms [ 1 ] = new MenuItem ( "-" ) ;  

  97. mnuItms [ 2 ] = new MenuItem ( ) ;  

  98. mnuItms [ 2 ] .Text = "退出系統(tǒng)" ;  

  99. mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;  

  100. mnuItms [ 2 ] .DefaultItem = true ;  

  101. notifyiconMnu = new ContextMenu ( mnuItms ) ;  

  102. TrayIcon.ContextMenu = notifyiconMnu ;  

  103. //為托盤程序加入設(shè)定好的ContextMenu對(duì)象  

  104. this.SuspendLayout ( ) ;  

  105. this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;  

  106. this.ClientSize = new System.Drawing.Size ( 320 , 56 ) ;  

  107. this.ControlBox = false ;  

  108. this.MaximizeBox = false ;  

  109. this.MinimizeBox = false ;  

  110. this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;  

  111. this.Name = "capture" ;  

  112. this.ShowInTaskbar = false ;  

  113. this.Text = "用C#做Screen Capture程序!" ;  

  114. this.ResumeLayout ( false ) ;  

  115. }  

  116. static void Main ( )  

  117. {  

  118. Application.Run ( new Capture ( ) ) ;  

  119. }  

  120. }  

感謝各位的閱讀,以上就是“怎么用C#做Screen Capture程序”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么用C#做Screen Capture程序這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI