程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 運用C#制作屏幕捕捉程序(1)

運用C#制作屏幕捕捉程序(1)

編輯:C#入門知識

運用C#制作屏幕捕捉程序

隨著微軟.Net戰略的進一步深入,各種新的技術、概念可謂層出不窮,特別是C#語言的推出,在業界產生了重大影響。C#是一門高效的語言,它既有VB的RAD特性,又不乏C++語言的高效性。最重要的它是基於.Net Framework的,在圖形圖像、網絡編程等方面有著強大的優勢,所以它很可能發展成為未來的主要編程語言之一。

  本文通過一個實例來向大家展示一下用C#進行圖形圖像編程的特性。實例中運用到了GDI+編程的一些基礎知識,GDI+是從GDI演化而來的,是.Net環境下的新的圖形圖像編程機制。它不僅具有GDI編程的一些基本功能,而且對GDI進行了不少擴充,使得它功能更強大。在Visual Studio的以前版本中使用GDI是相當復雜的,而且工作量十分大。現在在GDI+中,微軟已經幫我們解決了許多問題,因而使用GDI+進行圖形圖像編程將變得非常容易。不過要指出的是:用GDI編程雖然較復雜,卻可以完成幾乎所有的復雜功能,比如在實例中用GDI可以輕易做一個屏幕捕捉程序。那麼,現在我們在GDI+是否也能完成同樣的功能呢?答案是肯定的。正因為GDI+是從GDI演化而來的,我們只要在GDI+中調用GDI的一些功能就行了。

  C#有一個特性,那就是它允許你運用任何預先已經完成的動態連接庫文件(*.dll),其中當然包括了gdi32.dll這個文件。該文件包含了進行GDI編程所需的基本類庫、函數、方法等。這樣,我們在GDI+編程機制下也同樣可以享受GDI為我們留下的寶貴資源。具體導入的方法如下:

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

  在GDI中做屏幕捕捉程序的話,就要用到上下文設備(device context)了。在程序中,我們用它獲得屏幕圖形並將它寫入內存中的一個位圖中,實現的方法就是調用BitBlt()函數。同樣在GDI+中實現的原理是一樣的,下面給出了GDI+中的外部聲明函數(用C#語言描述):

privatestaticexternbool BitBlt(

IntPtr hdcDest, file://目的上下文設備的句柄

int nXDest, file://目的圖形的左上角的x坐標

int nYDest, file://目的圖形的左上角的y坐標

int nWidth, file://目的圖形的矩形寬度

int nHeight, file://目的圖形的矩形高度

IntPtr hdcSrc, file://源上下文設備的句柄

int nXSrc, file://源圖形的左上角的x坐標

int nYSrc, file://源圖形的左上角的x坐標

System.Int32 dwRop file://光柵操作代碼

);

  為了能在GDI+中調用GDI,我們還需要取得上下文設備的鉤子。在GDI+中有一個方法就提供了這種操作的具體實現:

IntPtr dc1 = aGraphicsObject.GetHdc();

  在取得了源上下文設備以及目的上下文設備的句柄後,我們就可以在上面的BitBlt()函數運用它們(作為參數),實現圖像創建功能了。在圖像創建後,還必須釋放源上下文設備以及目的上下文設備資源。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved