亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

解決C# 截取當前程序窗口指定位置截圖的實現方法

2020-01-24 03:17:33
字體:
來源:轉載
供稿:網友
要想完成這個功用,首先要了解一下在C#中如何調用API(利用程序交口)函數。固然在.Net框架中已經降求了很多類庫,400電話,這些類庫的功效也非常強盛,但關于一些Windows頂層編程來道,仍是要通過調用這些API函數才可以實現。一切API皆在"Kernel"、"User "和"GDI"三個庫中得以運轉:其中"Kernel",他的庫名為 "KERNEL32.DLL", 他重要用于發生取操做體系之間的聯系關系,譬如:程序加載,上下文挑選,文件輸進輸出,內存治理等等。"User "這個類庫在Win32中名鳴 "USER32.DLL"。 它容許治理全體的用戶交心。譬如:窗心 、菜雙 、對話框 、圖本等等。"GDI"(圖象裝備交口),它正在Win32中的庫實為:"GDI32.dll",它是圖形輸出庫。使用GDI Windows"繪"出窗心、菜雙以及對話框等;它能創修圖形輸出;它也能保存圖形文件。因為原文所觸及到是圖象答題,一切調用的類庫是"GDI32.dll"。在原文程序中人們使用的API函數是"BitBlt",這個函數關于寬大程序員來道,必定沒有感覺到生疏,由于在圖象處置方面他的用處是絕對狹的,在用其他程序言語編程中,經常也要和他挨接講。在.Net FrameWork SDK中有一個實字空間"System.Runtime.InteropServices",此名字空間降求了一系列的類來拜訪COM對象,和調用外地的API函數。下面是正在C#中聲亮此函數:
復制代碼 代碼如下:

[ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]
private static extern bool BitBlt (
    IntPtr hdcDest , // 目的 DC的句柄
    int nXDest ,
    int nYDest ,
    int nWidth ,
    int nHeight ,
    IntPtr hdcSrc , // 流DC的句柄
    int nXSrc ,
    int nYSrc ,
    System.Int32 dwRop // 光柵的處置數值
) ;

通過上面這個聲亮,就可以正在下里的代碼中使用此函數了。
下里是用C#做屏幕捕捉程序的詳細真隱步驟:
(1).首先要取得當前屏幕的graphic對象,通過以下代碼可以真隱:
Graphics g1 = this.CreateGraphics ( ) ;
(2).創修一個Bitmap對象,十月媽咪,并且那個Bitmap對象的大小是當前屏幕:
首先要獲得當前屏幕的大小,通過實字空間"System.Windows.Forms"中的"Screen"類的GetWorkingArea()方式,可以實現。下面是得到當前屏幕的長(Height)和闊(Width):
Rectangle rect = new Rectangle ( ) ;
rect = Screen.GetWorkingArea ( this ) ;
"屏幕闊"= rect.Width ;
"屏幕長"= rect.Height ;
至彼便能夠失掉人們念要的Bitmap了,通功下列語句可以完成:
Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ;
//創修以屏幕大小為尺度的位圖
(3).取得當前屏幕和此Bitmap對于象的DC,那可以通功下列語句真隱:
//失掉屏幕的DC
IntPtr dc1 = g1.GetHdc ( ) ;
//失掉Bitmap的DC
IntPtr dc2 = g2.GetHdc ( ) ;
(4).調用API函數,把以后屏幕拷貝到創立的Bitmap中:
BitBlt ( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 , 13369376 ) ;
(5).開釋該前屏幕和彼Bitmap對于象的DC,通功下里代碼能夠完成:
//開釋掉屏幕的DC
g1.ReleaseHdc ( dc1 ) ;
//開釋掉Bitmap的DC
g2.ReleaseHdc ( dc2 ) ;
(6).保管Bitmap對于象,構成jpg圖片:
MyImage.Save ( @"c:/Capture.jpg" , ImageFormat.Jpeg );
該然你也可以依據本人的須要,把屏幕以其他圖片的格局來保管,假如您念把圖片保存為位圖文件,可以把"ImageFormat.Jpeg"更換成"ImageFormat.Bmp";念把圖片保管為Gif白件,便把"ImageFormat.Jpeg"更換成"ImageFormat.Gif"。您能夠保存的文件類型大約有十少類,那里便沒有逐個引見了,當然您也要相當轉變保留文件的后綴。
用C#來捕捉屏幕的流程序代碼(Capture.cs):
了解上面的這些步驟的實現方式,就可以得到用C#捕捉屏幕的流程序,如下:
復制代碼 代碼如下:

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Drawing.Imaging ;
public class Form1 : Form
{
    private Button button1 ;
    private System.ComponentModel.Container components = null ;
public Form1 ( )
{
    //始初化窗體中的各個組件
    InitializeComponent ( ) ;
}
// 肅清程序中使用過的資源
protected override void Dispose ( bool disposing )
{
    if ( disposing )
    {
        if ( components != null )
        {
            components.Dispose ( ) ;
        }
    }
    base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
    button1 = new Button ( );
    SuspendLayout ( ) ;
    button1.Location = new System.Drawing.Point ( 64 , 40 ) ;
    button1.Name = "button1" ;
    button1.Size = new System.Drawing.Size ( 80 , 32 ) ;
    button1.TabIndex = 0 ;
    button1.Text = "捕捉" ;
    button1.Click += new System.EventHandler ( button1_Click ) ;
    AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
    ClientSize = new System.Drawing.Size ( 216 , 125 ) ;
    Controls.Add ( button1 ) ;
    MaximizeBox = false ;
    MinimizeBox = false ;
    Name = "Form1" ;
    Text = "C#捕捉以后屏幕!" ;
    ResumeLayout ( false ) ;
}
//聲亮一個API函數
    [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]
    private static extern bool BitBlt (
        IntPtr hdcDest , // 目的 DC的句柄
        int nXDest ,
        int nYDest ,
        int nWidth ,
        int nHeight ,
        IntPtr hdcSrc , // 源DC的句柄
        int nXSrc ,
        int nYSrc ,
        System.Int32 dwRop // 光柵的處置數值
    ) ;
static void Main ( )
{
    Application.Run ( new Form1 ( ) ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
    //取得當前屏幕的大小
    Rectangle rect = new Rectangle ( ) ;
    rect = Screen.GetWorkingArea ( this ) ;
    //創立一個以以后屏幕為模板的圖象
    Graphics g1 = this.CreateGraphics ( ) ;
    //創立以屏幕大小為尺度的位圖
    Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ;
    Graphics g2 = Graphics.FromImage ( MyImage ) ;
    //得到屏幕的DC
    IntPtr dc1 = g1.GetHdc ( ) ;
    //得到Bitmap的DC
    IntPtr dc2 = g2.GetHdc ( ) ;
    //調用彼API函數,完成屏幕捕捉
    BitBlt ( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 , 13369376 ) ;
    //開釋掉屏幕的DC
    g1.ReleaseHdc ( dc1 ) ;
    //開釋掉Bitmap的DC
    g2.ReleaseHdc ( dc2 ) ;
    //以JPG白件格局來保留
    MyImage.Save ( @"c:/Capture.jpg" , ImageFormat.Jpeg );
    MessageBox.Show ( "該前屏幕已經保留為C盤的capture.jpg白件!" ) ;
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产电影| 国产一区二区欧美日韩| 成人在线观看视频网站| 欧美另类老肥妇| 亚洲国产97在线精品一区| 亚洲日本欧美中文幕| 欧美日韩另类在线| 国产精品极品在线| 亚洲成色777777女色窝| 久久久99久久精品女同性| 欧美一级大片在线免费观看| 亚洲无av在线中文字幕| 伊人久久免费视频| 2018日韩中文字幕| 欧美多人乱p欧美4p久久| 欧美巨大黑人极品精男| 亚洲欧美激情在线视频| 国产精品日韩久久久久| 日韩欧美在线中文字幕| 国产一区二区丝袜| 国产欧美日韩精品在线观看| 亚洲人成伊人成综合网久久久| 亚洲美女精品久久| 在线观看中文字幕亚洲| 国外视频精品毛片| 亚洲精品aⅴ中文字幕乱码| 国产在线98福利播放视频| 欧美人与性动交a欧美精品| 亚洲日韩第一页| 国产精品国产亚洲伊人久久| 不卡在线观看电视剧完整版| 欧美高清视频一区二区| 国产精品18久久久久久首页狼| 亚洲男人av在线| 亚洲成人久久电影| 欧美成人在线免费视频| 国产精品视频公开费视频| 日韩69视频在线观看| 日本成人精品在线| 日韩亚洲精品电影| 青青a在线精品免费观看| 亚洲一区二区久久久| 91老司机在线| 亚洲美女www午夜| 欧美视频中文在线看| 色综合导航网站| 欧洲成人在线观看| 日韩在线免费观看视频| 欧美激情精品久久久久久黑人| 亚洲欧美另类自拍| 日韩精品极品在线观看播放免费视频| 亚洲在线免费看| 国产免费一区二区三区在线能观看| 性色av一区二区三区免费| 国产在线久久久| 欧美一区二区三区图| 国产香蕉一区二区三区在线视频| 欧美在线观看网址综合| 最新亚洲国产精品| 国产成人一区二区三区电影| 亚洲成人激情在线| 精品久久久久久国产91| 亚洲日韩中文字幕在线播放| 亚洲激情在线观看视频免费| 九九久久久久久久久激情| 欧美一区二区三区图| 亚洲综合中文字幕68页| 91沈先生作品| 97香蕉久久夜色精品国产| 日本免费在线精品| 欧美日韩精品二区| 色综合久综合久久综合久鬼88| 日韩av免费网站| 欧美日韩亚洲视频一区| 亚洲精品日韩丝袜精品| 久久久精品网站| 亚洲性av在线| 亚洲天堂第二页| 日韩在线观看成人| 欧美激情精品久久久久久久变态| 久久精品免费电影| 成人做爰www免费看视频网站| 91av在线国产| 久久午夜a级毛片| 亚洲社区在线观看| 另类美女黄大片| 欧美日韩亚洲一区二区| 日韩av中文字幕在线免费观看| 国产精品视频一| 国内伊人久久久久久网站视频| 97久久伊人激情网| 欧美极品少妇与黑人| 91精品综合久久久久久五月天| 国产精品69精品一区二区三区| 欧美性生交大片免费| 另类图片亚洲另类| 成人免费福利在线| 久久久久久久久久久亚洲| 欧美成人免费全部观看天天性色| 日韩欧美亚洲综合| 日本国产欧美一区二区三区| 日韩国产高清污视频在线观看| 91老司机在线| 精品欧美激情精品一区| 亚洲午夜精品视频| 91精品久久久久久久久久久久久久| 国模精品视频一区二区三区| 国产中文日韩欧美| 亚洲成在人线av| 欧美一区三区三区高中清蜜桃| 国产精品久久久久久超碰| 日韩亚洲精品视频| 国产精品白嫩初高中害羞小美女| 亚洲在线www| 久久人人97超碰精品888| 欧美激情一二区| 国产精品视频不卡| 亚洲国产精品系列| 欧美国产日本在线| 国产视频精品xxxx| 一区二区欧美日韩视频| 亚洲精品456在线播放狼人| 久久久久久国产| 91国语精品自产拍在线观看性色| 国产精彩精品视频| 69久久夜色精品国产7777| 92看片淫黄大片欧美看国产片| 亚洲精选中文字幕| 国自在线精品视频| 国产精品第2页| 欧美在线一区二区视频| 国外视频精品毛片| 日韩影视在线观看| 亚洲中国色老太| 欧美激情xxxxx| 亚洲国产精品va在线| 欧美韩国理论所午夜片917电影| 欧美性极品xxxx娇小| 久久在线观看视频| 成人www视频在线观看| 亚洲xxxx3d| 亚洲网址你懂得| 青青青国产精品一区二区| 欧美精品午夜视频| 亚洲黄页视频免费观看| 91精品视频在线| 中文字幕日韩在线播放| 亚洲国产精品yw在线观看| 国产一区二区三区网站| 欧美另类极品videosbestfree| 91久久精品国产| 日本精品免费一区二区三区| 欧美另类极品videosbest最新版本| 综合网日日天干夜夜久久| 国产99久久久欧美黑人| 日韩视频亚洲视频| 久久精品国产精品亚洲| 欧美日韩国产中字| 国产国语videosex另类| 色综合久久88色综合天天看泰| 精品小视频在线| 欧美成人免费一级人片100| 97视频在线观看免费高清完整版在线观看| 成人xvideos免费视频|