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

cc

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

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

[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);
參數(shù)中的各種DC可以用Graphics.GetHdc得到;最后一個(gè)參數(shù)光柵操作碼很多,截取屏幕用的SRCCOPY值是0xcc0020,完整的光柵操作碼可以查看MSDN的“Ternary Raster Operations”部分。

示例代碼如下:

//這里假設(shè)要保存一個(gè)窗體的內(nèi)容

int width=800;     //獲取寬度

int height=600;     //獲取高度

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

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();

 

 關(guān)于Graphics.CopyFromScreen方法

     該方法在內(nèi)部其實(shí)也使用BitBlt來進(jìn)行圖塊復(fù)制,但是它只是固定的復(fù)制屏幕的內(nèi)容,我們不能指定復(fù)制的源。

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

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();

 

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

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

posted on 2009-11-30 17:44 醒目西西 閱讀(2219) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美一区二区三区四区视频| 葵司免费一区二区三区四区五区| 正在播放欧美一区| 在线免费观看日本欧美| 国产精品系列在线播放| 国产日韩欧美三级| 国产亚洲一区二区三区在线观看 | 欧美日韩在线免费| 欧美日本国产| 国产精品乱码一区二三区小蝌蚪 | 国产精品黄色| 国产精品va在线| 国产精品最新自拍| 黄色亚洲大片免费在线观看| 永久免费精品影视网站| 亚洲精品在线观| 亚洲一区二区三区在线播放| 亚洲欧美视频在线观看视频| 久久av最新网址| 亚洲福利视频免费观看| 亚洲国产欧美日韩精品| 一区二区三欧美| 免费观看一区| 欧美一区中文字幕| 麻豆成人在线播放| 亚洲区一区二区三区| 亚洲午夜电影| 麻豆乱码国产一区二区三区| 欧美区视频在线观看| 国产精品日产欧美久久久久| 伊人成人网在线看| 亚洲影院免费| 欧美电影免费网站| 中文精品视频| 六十路精品视频| 欧美视频你懂的| 在线观看91精品国产入口| 一本色道久久综合亚洲精品婷婷| 亚洲自拍三区| 亚洲国产精品久久91精品| 亚洲一区不卡| 久久―日本道色综合久久| 欧美深夜影院| 亚洲电影在线| 久久精品国产免费| 99精品国产福利在线观看免费| 欧美伊久线香蕉线新在线| 亚洲午夜精品一区二区| 亚洲欧美欧美一区二区三区| 久久免费视频在线| 99热在这里有精品免费| 久久久久久久久久久成人| 国产精品高潮呻吟久久av无限| 有码中文亚洲精品| 久久成人人人人精品欧| 一二三四社区欧美黄| 欧美精品不卡| 亚洲高清久久久| 久久躁狠狠躁夜夜爽| 一本久久精品一区二区| 亚洲欧美另类在线| 欧美日产在线观看| 91久久国产综合久久蜜月精品| 亚洲免费婷婷| 一区二区三区日韩精品| 欧美日本亚洲视频| 一区二区三区回区在观看免费视频| 麻豆乱码国产一区二区三区| 亚洲男人第一av网站| 国产日韩欧美综合在线| 一区二区精品| aaa亚洲精品一二三区| 欧美日韩成人免费| 亚洲午夜女主播在线直播| 99在线精品视频| 国产精品激情电影| 午夜一区二区三区不卡视频| 亚洲午夜精品视频| 国内精品久久久久久久97牛牛| 久久精品系列| 另类成人小视频在线| 亚洲精品一区在线观看| 99综合视频| 国产一区二区高清不卡| 麻豆久久精品| 欧美日本不卡高清| 欧美一级理论片| 久久久久久久网| 日韩视频中午一区| 亚洲淫片在线视频| 狠狠色狠狠色综合日日五| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美精品 国产精品| 一区二区三区欧美成人| 亚洲综合三区| 亚洲高清在线视频| 一区二区三区欧美亚洲| 国产一区在线视频| 亚洲国产经典视频| 国产精品嫩草影院av蜜臀| 久久久一区二区三区| 美腿丝袜亚洲色图| 小黄鸭精品aⅴ导航网站入口| 久久人人97超碰国产公开结果 | 亚洲人成亚洲人成在线观看图片 | 久久亚洲春色中文字幕| 欧美交受高潮1| 一本久久知道综合久久| 亚洲视频你懂的| 激情小说另类小说亚洲欧美| 亚洲精品一区二区三区在线观看 | 亚洲国产精品专区久久| 亚洲一区国产精品| 亚洲美女精品成人在线视频| 午夜精品在线| 99亚洲伊人久久精品影院红桃| 羞羞漫画18久久大片| 99人久久精品视频最新地址| 久久精品国产亚洲aⅴ| 亚洲一区在线播放| 牛人盗摄一区二区三区视频| 香蕉免费一区二区三区在线观看 | 六月丁香综合| 国产精品久久99| 91久久夜色精品国产九色| 激情欧美日韩一区| 午夜精品久久久久久久男人的天堂| 日韩一级精品| 麻豆国产va免费精品高清在线| 欧美一级理论性理论a| 欧美经典一区二区三区| 欧美国产亚洲精品久久久8v| 精品成人久久| 欧美在线视频a| 久久高清免费观看| 国产伦精品一区二区三区在线观看 | 欧美日韩a区| 欧美二区在线播放| 狠狠爱综合网| 欧美伊人久久大香线蕉综合69| 亚洲欧美国产不卡| 国产精品久久久久影院色老大 | 欧美在线看片| 国产精品综合| 午夜精品久久久久久久 | 亚洲黄色一区二区三区| 在线免费日韩片| 久久网站热最新地址| 久久视频精品在线| 国产一区二区三区久久| 亚欧成人精品| 麻豆freexxxx性91精品| 在线成人h网| 蜜桃av一区| 亚洲日本中文字幕| 亚洲影院在线| 国语自产精品视频在线看抢先版结局 | 欧美成人国产va精品日本一级| 欧美在线观看视频一区二区| 国产综合色精品一区二区三区| 亚洲少妇诱惑| 欧美激情亚洲视频| 亚洲大胆在线| 洋洋av久久久久久久一区| 欧美gay视频激情| 亚洲日本久久| 午夜国产不卡在线观看视频| 国产精品美女久久久久久久| 欧美一级片久久久久久久| 久久综合伊人| 99re66热这里只有精品3直播| 欧美午夜片在线观看| 亚洲欧美日韩中文播放| 模特精品在线| 亚洲亚洲精品在线观看| 国产情人综合久久777777| 久久夜色精品国产亚洲aⅴ| 亚洲国内高清视频| 欧美在线播放一区| 亚洲国产高清高潮精品美女| 欧美日韩午夜在线| 久久国产精品一区二区三区| 亚洲黄色精品| 欧美一区二区三区免费视| 亚洲福利视频一区| 国产精品女主播一区二区三区| 久久综合九色综合久99| 亚洲少妇中出一区| 欧美激情网站在线观看| 欧美一区二区在线视频| 99riav国产精品| 在线色欧美三级视频| 国产精品麻豆va在线播放| 欧美福利视频网站| 久久久久久久欧美精品| 亚洲欧美日韩国产综合| 亚洲精品综合在线| 亚洲高清视频在线观看| 久久蜜桃香蕉精品一区二区三区| 亚洲一二三区视频在线观看|