青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

cc

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
最近在嘗試為軟件增加截取屏幕的功能,為此學習了System.Drawing命名空間的Graphics、Image、Bitmap等GDI+類,這些類都很方便使用。但是它們大多都是對原有GDI API的封裝,也增加了一些新的東西;不過封裝得并不徹底,有些功能還是需要調用GDI API才能實現。我武斷的認為Image、Bitmap、Metafile跟HBITMAP對應,Graphics跟HDC對應。

    在GDI+中,我們可以很方便的用Graphics.FromImage方法來操作Image中的內容,并將其保存回圖片文件。那么,我們怎么才能保存Graphics到圖片文件呢?創(chuàng)建一個Bitmap對象,復制Graphics g1的內容到Bitmap的Graphics g2,然后保存Bitmap對象到文件。復制過程我們必須通過PINVOKE調用BitBlt函數來實現。下面是該函數的聲明:

[DllImport("gdi32.dll", CharSet=CharSet.Auto, SetLastError=true, ExactSpelling=true)]
public static extern int BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight, HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
參數中的各種DC可以用Graphics.GetHdc得到;最后一個參數光柵操作碼很多,截取屏幕用的SRCCOPY值是0xcc0020,完整的光柵操作碼可以查看MSDN的“Ternary Raster Operations”部分。

示例代碼如下:

//這里假設要保存一個窗體的內容

int width=800;     //獲取寬度

int height=600;     //獲取高度

const int SRCCOPY=0xcc0020;     //復制圖塊的光柵操作碼

Bitmap bmSave=new Bitmap(width,height);     //用于保存圖片的位圖對象

Graphics gSave=Graphics.FromImage(bmSave);     //創(chuàng)建該位圖的Graphics對象

HandleRef hDcSave=new HandleRef(null,gSave.GetHdc());     //得到句柄

Graphics gSrc=formMain.CreateGraphics();     //創(chuàng)建窗體的Graphics對象

HandleRef hDcSrc=new HandleRef(null,gSrc.GetHdc());

BitBlt(hDcSave,0,0,width,height,hDcSrc,0,0,SRCCOPY);

gSrc.ReleaseHdc();

gSave.ReleaseHdc();

bmSave.Save(@"C:\test.bmp");

gSrc.Dispose();

gSave.Dispose();

bmSave.Dispose();

 

 關于Graphics.CopyFromScreen方法

     該方法在內部其實也使用BitBlt來進行圖塊復制,但是它只是固定的復制屏幕的內容,我們不能指定復制的源。

如果您需要截取屏幕的內容,可以使用以下代碼:

int screenWidth=System.Windows.Forms.SystemInformation.VirtualScreen.Width;     //屏幕寬度

int screenHeight=System.Windows.Forms.SystemInformation.VirtualScreen.Height;     //屏幕高度

Bitmap bmSave=new Bitmap(screenWidth,screenHeight);

Graphics g=Graphics.FromImage(bmSave);

g.CopyFromScreen(0,0,0,0,new Size(screenWidth,screenHeight),CopyPixelOperation.SourceCopy);

bmSave.Save(@"C:\test.bmp");

g.Dispose();

bmSave.Dispose();

 

如果需要復制頂層窗體的可見部分,也可以使用Graphics.CopyFromScreen,但是需要用PointToScreen方法先得到屏幕坐標。

如果需要復制任意的窗體或者控件,先用Control.Handle得到控件句柄,然后再用GetDC()函數得到HDC,再用BitBlt進行圖塊復制。

posted on 2009-11-30 17:44 醒目西西 閱讀(2219) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美xxxx在线观看| 亚洲精品免费在线观看| 久久精品亚洲热| 久久国产精品久久w女人spa| 欧美一级二区| 久久一区免费| 欧美激情精品久久久久久久变态| 欧美激情国产日韩精品一区18| 欧美人与禽性xxxxx杂性| 欧美色精品在线视频| 国产精品推荐精品| 激情av一区| av成人免费在线| 久久成人精品无人区| 欧美成人中文字幕| 一区二区三区欧美视频| 午夜精品网站| 欧美v日韩v国产v| 国产精品久久久一本精品| 国产在线精品成人一区二区三区| 91久久夜色精品国产九色| 亚洲欧美日韩国产成人精品影院| 久久精品一区二区三区四区| 欧美黄色大片网站| 欧美一级电影久久| 欧美日韩一区二区精品| 精品动漫3d一区二区三区免费版| 亚洲视频专区在线| 欧美jjzz| 欧美主播一区二区三区| 欧美日韩精品一本二本三本| 精品不卡视频| 欧美一区二区三区免费视频| 欧美激情aⅴ一区二区三区| 亚洲免费在线视频一区 二区| 蜜桃av一区二区| 国产亚洲一区二区三区在线观看| 日韩一区二区免费高清| 另类专区欧美制服同性| 亚洲天堂偷拍| 欧美日韩国产亚洲一区| 精品成人久久| 久久精品国产精品亚洲综合 | 国内精品久久久久影院薰衣草| 亚洲人体偷拍| 牛牛影视久久网| 久久精品亚洲一区二区| 亚洲一区区二区| 亚洲美女视频| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲一区在线免费| 欧美日韩精品伦理作品在线免费观看 | 国产精品拍天天在线| 一本色道88久久加勒比精品| 欧美电影在线| 老司机久久99久久精品播放免费| 国产丝袜一区二区三区| 亚洲女同同性videoxma| 中文av字幕一区| 国产精品videossex久久发布| 一区二区三区日韩欧美| 亚洲第一主播视频| 久久免费的精品国产v∧| 国产亚洲欧美另类中文| 久久综合网络一区二区| 久久婷婷蜜乳一本欲蜜臀| 国产一区视频在线看| 久久一区国产| 免费av成人在线| 亚洲免费福利视频| 亚洲精品看片| 国产精品青草久久| 欧美在线精品免播放器视频| 欧美一级视频| 一区二区自拍| 亚洲经典在线| 国产精品www| 欧美在线一级视频| 欧美一区二区三区电影在线观看| 国产一区二区三区久久久| 久久久一区二区| 欧美韩日亚洲| 午夜日本精品| 蜜臀91精品一区二区三区| 日韩一区二区福利| 性做久久久久久免费观看欧美| 在线日本成人| 亚洲午夜激情| 最新日韩在线视频| 亚洲一区制服诱惑| 91久久精品国产91久久性色| 9国产精品视频| 在线观看av不卡| 一本一道久久综合狠狠老精东影业 | 久久精品99久久香蕉国产色戒| 久久九九精品99国产精品| 亚洲人成欧美中文字幕| 亚洲一区二区三区在线看| 亚洲欧洲综合| 欧美一区二视频| 亚洲一级影院| 国产精品99久久久久久久女警 | 亚洲天堂偷拍| 在线免费观看一区二区三区| 99亚洲一区二区| 亚洲国产一区二区三区青草影视 | 欧美激情2020午夜免费观看| 午夜在线视频一区二区区别| 老司机午夜精品视频| 欧美一区精品| 欧美日韩在线免费| 欧美电影免费| 激情婷婷久久| 亚洲欧美日韩区| 一区二区三区四区蜜桃| 久久人91精品久久久久久不卡| 香港久久久电影| 欧美少妇一区二区| 亚洲精品欧美极品| 亚洲高清久久久| 久久免费高清视频| 久久精品二区三区| 国产伪娘ts一区 | 欧美日韩三级| 亚洲欧洲视频| 99re8这里有精品热视频免费 | 亚洲伊人一本大道中文字幕| 99综合精品| 欧美电影免费| 欧美大片免费久久精品三p| 国产一区二三区| 欧美在线影院| 巨乳诱惑日韩免费av| 国户精品久久久久久久久久久不卡| 亚洲一区二区精品视频| 亚洲欧美日韩国产精品| 国产精品九九久久久久久久| 一本在线高清不卡dvd| 亚洲一区二区三区影院| 国产精品超碰97尤物18| 在线综合欧美| 久久精品人人做人人爽电影蜜月| 国产在线观看精品一区二区三区 | 国产精品色网| 亚洲欧美国产毛片在线| 久久成人18免费观看| 国内自拍视频一区二区三区| 久久精品亚洲乱码伦伦中文| 免费亚洲一区二区| 一本大道久久精品懂色aⅴ| 欧美日韩性生活视频| 中文网丁香综合网| 欧美一区二区三区成人| 国产精品人成在线观看免费| 久久黄色小说| 亚洲精品一区在线观看| 亚欧成人精品| 在线不卡亚洲| 欧美日韩999| 亚洲欧美视频一区| 激情久久一区| 99re6这里只有精品视频在线观看| 一区二区三区国产精品| 国产欧美精品日韩精品| 久久精品视频在线播放| 亚洲麻豆av| 久久久999成人| 99热精品在线| 国模私拍视频一区| 欧美美女日韩| 欧美一区网站| 最新国产成人av网站网址麻豆| 亚洲欧美日韩在线高清直播| 一区久久精品| 国产精品视频你懂的| 欧美成人首页| 香蕉乱码成人久久天堂爱免费| 欧美黄色aa电影| 久久不射电影网| 亚洲视频综合| 亚洲人在线视频| 国产三区精品| 国产精品久久久| 欧美高清一区| 久久久99精品免费观看不卡| 中文精品视频| 亚洲美女网站| 亚洲国产精品欧美一二99| 久久精品人人做人人爽电影蜜月| 中文国产成人精品| 亚洲精品国产视频| 黑人巨大精品欧美黑白配亚洲| 欧美视频亚洲视频| 欧美久久久久久蜜桃| 狂野欧美激情性xxxx欧美| 欧美在线关看| 久久精品国产69国产精品亚洲| 亚洲一区二区三区四区五区黄| 亚洲免费观看视频| 99亚洲一区二区|