91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用C#做Screen Capture程序

發布時間:2021-12-02 11:33:29 來源:億速云 閱讀:165 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么用C#做Screen Capture程序”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用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. //導入在程序中使用到的名稱空間  

  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 , //目標設備的句柄  

  29. int nXDest , // 目標對象的左上角的X坐標  

  30. int nYDest , // 目標對象的左上角的X坐標  

  31. int nWidth , // 目標對象的矩形的寬度  

  32. int nHeight , // 目標對象的矩形的長度  

  33. IntPtr hdcSrc , // 源設備的句柄  

  34. int nXSrc , // 源對象的左上角的X坐標  

  35. int nYSrc , // 源對象的左上角的X坐標  

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

  37. ) ;  

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

  39. private static extern IntPtr CreateDC (  

  40. string lpszDriver , // 驅動名稱  

  41. string lpszDevice , // 設備名稱  

  42. string lpszOutput , // 無用,可以設定位"NULL"  

  43. IntPtr lpInitData // 任意的打印機數據  

  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. //創建顯示器的DC  

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

  51. //由一個指定設備的句柄創建一個新的Graphics對象  

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

  53. //根據屏幕大小創建一個與之相同大小的Bitmap對象  

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

  55. //獲得屏幕的句柄  

  56. IntPtr dc3 = g1.GetHdc ( ) ;  

  57. //獲得位圖的句柄  

  58. IntPtr dc2 = g2.GetHdc ( ) ;  

  59. //把當前屏幕捕獲到位圖對象中  

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

  61. //把當前屏幕拷貝到位圖中  

  62. g1.ReleaseHdc ( dc3 ) ;  

  63. //釋放屏幕句柄  

  64. g2.ReleaseHdc ( dc2 ) ;  

  65. //釋放位圖句柄  

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

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

  68. this.Visible = true ;  

  69. }  

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

  71. {  

  72. //隱藏托盤程序中的圖標  

  73. TrayIcon.Visible = false ;  

  74. //關閉系統  

  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. //設定托盤程序的各個屬性  

  87. TrayIcon = new NotifyIcon ( ) ;  

  88. TrayIcon.Icon = mNetTrayIcon ;  

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

  90. TrayIcon.Visible = true ;  

  91. //定義一個MenuItem數組,并把此數組同時賦值給ContextMenu對象  

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

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

  94. mnuItms [ 0 ] .Text = "捕獲當前屏幕!" ;  

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

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

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

  98. mnuItms [ 2 ] .Text = "退出系統" ;  

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

  100. mnuItms [ 2 ] .DefaultItem = true ;  

  101. notifyiconMnu = new ContextMenu ( mnuItms ) ;  

  102. TrayIcon.ContextMenu = notifyiconMnu ;  

  103. //為托盤程序加入設定好的ContextMenu對象  

  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程序”的內容了,經過本文的學習后,相信大家對怎么用C#做Screen Capture程序這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 留坝县| 邛崃市| 济南市| 奎屯市| 弋阳县| 桂平市| 湟源县| 沐川县| 重庆市| 新密市| 黄浦区| 正蓝旗| 黑河市| 平武县| 凤城市| 三亚市| 海门市| 瓮安县| 张北县| 石渠县| 娄烦县| 大渡口区| 千阳县| 关岭| 塘沽区| 潜山县| 湖北省| 淅川县| 永新县| 渑池县| 婺源县| 苏州市| 交口县| 洛浦县| 绿春县| 景德镇市| 信阳市| 湖口县| 盐城市| 临城县|