亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        .NET環(huán)境下C#與IDL集成開發(fā)方法研究

        2012-10-26 07:42:52鄭州鐵路職業(yè)技術學院軟件學院李海勝朱紋玉
        河南科技 2012年3期
        關鍵詞:可視化程序環(huán)境

        鄭州鐵路職業(yè)技術學院 軟件學院 李海勝 朱紋玉

        .NET環(huán)境下C#與IDL集成開發(fā)方法研究

        鄭州鐵路職業(yè)技術學院 軟件學院 李海勝 朱紋玉

        目前,應用程序開發(fā)商有著眾多的編程語言可供選擇。這些編程語言面向不同的應用,并擁有不同的特點。綜合不同編程語言的特點,實現(xiàn)高效的應用程序開發(fā)是現(xiàn)代軟件開發(fā)的一個重要方向。C#是微軟公司為.NET環(huán)境精心設計并開發(fā)的下一代編程語言,它具有支持快速開發(fā),面向對象和組件等諸多優(yōu)點。C#語言可以很方便地利用Windows的系統(tǒng)資源以及.NET平臺提供的大量基礎類庫,通過C#能夠在.NET環(huán)境上快速開發(fā)出種類豐富的應用程序。C#語言與IDL(接口描過語言)的集成開發(fā)可以方便快捷地開發(fā)出功能強大的各種應用程序。IDL是集科學數(shù)據(jù)分析可視化表達與跨平臺應用開發(fā)等功能為一體的第4代可視化編程語言。它面向矩陣,可以對數(shù)組直接進行操作,具有快速分析超大規(guī)模數(shù)據(jù)庫的能力,速度相比C、C++也有很大的提高?;贑#語言與IDL的優(yōu)點,本文,筆者介紹了在C#語言中調用IDL進行應用程序開發(fā)的4種方式。

        一、.NET環(huán)境與IDL簡介

        1..NET環(huán)境。.NET環(huán)境是微軟公司最近推出的一個全新概念,它支持下一代Internet可編程結構。.NET是一個革命性的新平臺,它建立在開放的Internet協(xié)議之上,采用了許多新的工具和服務。簡而言之,.NET環(huán)境是1種面向網(wǎng)絡度支持各種用戶終端的開發(fā)平臺環(huán)境。C#語言是微軟公司于2000年7月發(fā)布的一款專門為.NET環(huán)境而開發(fā)的編程語言。作為.NET環(huán)境的通用開發(fā)語言,它能夠建造所有的.NET應用。它是一個高效、安全和靈活的現(xiàn)代化程序設計語言?;贑#語言上述優(yōu)點,本文,筆者選擇C#語言作為.NET的開發(fā)語言。.NET環(huán)境采用統(tǒng)一的集成開發(fā)環(huán)境Visual Studio,本文,筆者的開發(fā)環(huán)境即為Visual Studio2005。在進行.NET應用程序開發(fā)時,可以方便地引用他人提供的外部程序集。從而,可以方便地實現(xiàn)程序的調用。

        2.IDL。IDL是美國ITT公司推出的一種可視化語言,它具有較強的數(shù)據(jù)分析和可視化能力。在IDL語言中往往只需要幾條語句就能執(zhí)行大量、復雜的數(shù)據(jù)處理或者實現(xiàn)二維、三維圖形的繪制,而這在其他語言中需要上百條語句才能實現(xiàn)。通過IDL鏈接外部程序、或者將IDL作為其他語言的外部程序或圖形引擎,IDL可以成為現(xiàn)有開發(fā)工具強有力的補充。在應用程序開發(fā)中實現(xiàn)IDL與其他語言的相互調用,使得語言之間可以得到優(yōu)勢互補,從而大大加快程序的開發(fā)進程。此外,IDL還可以方便地調用ENVI函數(shù),實現(xiàn)復雜的圖像處理功能,大大節(jié)省了系統(tǒng)的開發(fā)時間。

        二、在C#語言中調用IDL的方法

        1.圖形顯示模式。IDLDrawWidget(只用于Windows平臺)是IDL提供的可被嵌套在任何ActiveX語言控件的程序。IDLDrawWidget提供了其他語言調用IDL語言的機制。.NET環(huán)境支持新的組件標準Assembly,Assembly兼容ActiveX的機制,可以通過封裝ActiveX來實現(xiàn)。基于這種機制,就使得在.NET環(huán)境中集成IDL成為可能。在這里,需要注意的是,IDLDrawWidget在IDL6.4以后的版本中已經被ITT公司所放棄,并不再更新,所以一些新的IDL功能在IDLDrawWidget將無法調用。調用的方法:首先,在應用程序添加IDLDrawWidget。其次,初始化IDLDrawWidget。最后,通過IDLDrawWidget調用IDL。具體程序如下:

        IDLdw.IdlPath="C∶\ITT\IDL71\bin\bin.x86";

        int n=IDLdw.InitIDL((int)Handle);

        if(n==0)return;IDLdw.Retain=2;

        IDLdw.GraphicsLevel=2;

        int drawWidget=IDLdw.CreateDrawWidget();

        if(drawWidget<0) return;

        IDLdw.SetOutputWnd((int)logInfoText.Handle);

        在IDLDrawWidget控件初始化完畢后,就可以利用ExecuteStr方法來執(zhí)行IDL命令了。IDL命令可以是IDL語句也可以是IDL代碼文件或者是已經編譯好的.SAV文件。具體程序如下:

        IDL dw.Execute Str(".Compile T1.pro");

        IDLdw.ExecuteStr("T1");

        IDLdw.ExecuteStr("restore,T1.sav");

        IDL與C#之間的數(shù)據(jù)通信是系統(tǒng)開發(fā)的關鍵。IDLDrawWidget提供了IDL與外部應用環(huán)境之間的數(shù)據(jù)傳輸機制,使得IDL與外部程序之間的數(shù)據(jù)傳輸變得十分簡單。IDLDrawWidget與C#數(shù)據(jù)傳遞方式如下所示:首先,通過SetNamedData在C#下進行IDL中變量的創(chuàng)建。GetNamedData在C#下進行IDL變量讀取的具體程序如下:

        int v1=100;

        IDLdw.SetNamedData("v1",v1.ToString());

        string v2=(string)IDLdw.GetNamedData("v1");

        其次,通過SetNamedArray在C#語言中進行IDL中變量數(shù)組的創(chuàng)建,通過CopyNamedArray在C#語言進行IDL中變量數(shù)組的讀取。具體程序如下所示:

        int a1={1,2};

        IDLdw.SetNamedArray("a1",a1,true);

        int a2=(int)IDLdw.CopyNamedArray("a1");

        最后,使用ExecuteStr方法執(zhí)行命令行,同時傳遞數(shù)據(jù)。具體程序如下:

        int v1=100;

        IDLdw.SetNamedData("v1",v1);

        IDLdw.ExecuteStr(".compile SNF.pro");

        IDLdw.ExecuteStr("total=sumNumFun(v1=v1)");

        int dd=(int)IDLdw.GetNamedData("total");

        在.NET環(huán)境中,IDLDrawWidget通過“自動事件”屬性獨占IDLDrawWidget所產生的事件。此時,C#語言無法獲取IDLDrawWidget上所產生的事件。IDLDrawWidget的“自動事件”屬性包括OnInit、OnExpose、OnButtonPress等內容。若需IDLDrawWidget響應事件時,需指定“自動事件”屬性的IDL過程或函數(shù)。若需要C#語言對事件做出響應,可通過設置IDLDrawWidget的RegisterForEvents方法來屏蔽IDLDrawWidget的“自動事件”屬性,IDLDrawWidget便可在其控件區(qū)域響應.NET的標準事件,如Mouse Up、Mouse Down和Mouse Move等件。

        2.功能調用模式。若系統(tǒng)開發(fā)無需IDLDrawWidget程序提供的可視化窗口,C#語言可直接使用IDL提供的COM組件IDLDRAW3Lib來調用IDL。COM組件是微軟公司為了計算機工業(yè)的軟件生產更加符合人類行為方式而開發(fā)的一種軟件開發(fā)技術。在COM組件下,人們可以開發(fā)出各種各樣且功能專一的組件,然后將它們按照需要組合起來,構成復雜的應用系統(tǒng)。IDLDRAW3Lib組件的用法與圖形顯示模式基本相同:首先,在應用程序中添加IDLDRAW3Lib組件。其次,初始化IDLDRAW3Lib組件。最后,通過IDLDRAW3Lib組件調用IDL功能。IDLDRAW3Lib組件的數(shù)據(jù)傳遞方式與IDLDrawWidget程序的傳遞方法相同,在此就不再贅述了。

        3.COM_IDL_Connect組件。COM_IDL_Connect組件是IDL提供的另一種COM組件。COM_IDL_Connect組件提供了對ENVI/IDL現(xiàn)有功能調用的支持。COM_IDL_Connect組件的數(shù)據(jù)傳遞方式與IDLDRAW3Lib的數(shù)據(jù)傳遞方式相似。COM_IDL_Connect組件的用法亦與IDLDRAW3Lib的圖形顯示模式相同。首先,在應用程序中添加COM_IDL_Connect組件。其次,初始化COM_IDL_Connect組件。最后,通過COM_IDL_Connect組件調用IDL功能。

        4.輸出COM組件。IDL是1個COM組件,利用COM技術可以將IDL圖形功能嵌入到C#、VB、VC等編寫的Window程序中。借助IDL的對象輸出向導功能可以在其他軟件程序中很容易地使用IDL的可視化和分析功能,且無需進行跨平臺整合所需的編程工作。IDL對象輸出向導可輸出對象、方法和參數(shù),然后自動包裝指定的IDL對象,它可以很容易地將其導入到本地COM客戶端應用程序,縮短了接口開發(fā)的時間。使用IDL輸出向導導出COM的步驟如下:

        (1)定義IDL對象并將類定義文件的路徑添加到IDL路徑中。

        (2)將C#語言編譯器路徑添加到電腦環(huán)境變量path中。

        (3)將類定義文件加載到輸出向導中,并選擇工程類型為“輸出COM”。

        (4)設置輸出對象的參數(shù)、過程與函數(shù)。

        (5)編譯輸出對象。

        (6)生成*.DLL和*.TLB文件。

        (7)在CMD環(huán)境中使用regsvr32對*.DLL文件進行注冊。

        .DLL文件的用法與COM_IDL_Connect組件相似。首先,在應用程序中添加已輸出的COM組件。其次,初始化COM組件。最后,通過COM組件調用IDL。具體程序如下所示:

        sumnumsClassplusNum=new sumnumsClass();

        plusNum.CreateObject(0,0,0);

        float total=plusNum.FuncADD(33,56);

        三、方法比較

        圖形顯示模式和功能調用模式形象直觀,調用過程簡單,方便程序調試。而輸出COM組件模式則需編寫IDL對象,打包輸出COM組件,并在.NET環(huán)境下調用COM組件。在.NET環(huán)境下調用COM出錯時,需不斷重復上述整個過程從而導致程序調試過程繁瑣,提高了程序的開發(fā)難度。圖形顯示模式與輸出COM組件模式可以在.NET環(huán)境下創(chuàng)建IDL的DRAW顯示組件,在實現(xiàn)可視化的同時也提供了ENVI/IDL的功能調用。但功能調用模式只提供了ENVI/IDL的功能調用,并未提供可視化組件的調用。

        四、系統(tǒng)應用

        本文,筆者采用IDLdrawWidget程序來實現(xiàn)圖像3D顯示、波譜曲線瀏覽建庫、蝕變礦物信息提取等功能,快速地完成了ImageInfor系統(tǒng)的開發(fā)工作。ImageInfor程序主界面如圖1所示。

        本文,筆者總結介紹了.NET環(huán)境下C#語言與IDL相結合的4種開發(fā)方式。這些開發(fā)方式綜合了C#與IDL的優(yōu)點。C#語言支持快速開發(fā),其GUI(圖形用戶界面)設計方便且IDL數(shù)據(jù)分析功能強大。此外,IDL借助ENVI的二次開發(fā)函數(shù)庫可以實現(xiàn)更為強大的圖像處理功能。綜合利用編程語言的這些優(yōu)點,實現(xiàn)不同語言的集成開發(fā)在一定程度上加快了應用程序的開發(fā)速度,但是集成開發(fā)需要編程人員對不同語言都要具有一定深度的理解,這使得集成開發(fā)具有較大的技術難度。

        猜你喜歡
        可視化程序環(huán)境
        基于CiteSpace的足三里穴研究可視化分析
        基于Power BI的油田注水運行動態(tài)分析與可視化展示
        云南化工(2021年8期)2021-12-21 06:37:54
        長期鍛煉創(chuàng)造體內抑癌環(huán)境
        一種用于自主學習的虛擬仿真環(huán)境
        基于CGAL和OpenGL的海底地形三維可視化
        孕期遠離容易致畸的環(huán)境
        “融評”:黨媒評論的可視化創(chuàng)新
        傳媒評論(2019年4期)2019-07-13 05:49:14
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        環(huán)境
        “程序猿”的生活什么樣
        中文幕无线码中文字蜜桃| 欧美乱妇高清无乱码免费| 日本丰满熟妇videossex一| 亚洲av无码一区二区二三区 | 极品美女扒开粉嫩小泬图片| 国产一区二区在线视频| 亚洲国产成人无码影院| 人妻一区二区三区免费看| 亚洲精品中文字幕视频色 | 青青久在线视频免费观看| 久久精品国产一区二区蜜芽| 亚洲人妻av综合久久| 香蕉成人伊视频在线观看| 骚小妹影院| 日韩人妻无码精品久久伊人| 三个黑人插一个女的视频| 国产精品久久久久久人妻无| 国产婷婷一区二区三区| 毛片在线啊啊| 亚洲24小时免费视频| 国产激情视频在线观看的| 九九99无码精品视频在线观看| 国产亚洲精品日韩香蕉网| 亚洲中文字幕高清av| 欧美video性欧美熟妇| 久久ri精品高清一区二区三区| 亚洲免费观看一区二区三区 | 蜜桃视频中文字幕一区二区三区| 精品亚洲一区二区三区四区五 | 国产黄色一区二区在线看| 永久黄网站色视频免费看| 99视频这里有精品| 日韩人妖一区二区三区| 免费a级毛片又大又粗又黑| 亚洲av男人的天堂在线观看| 久久亚洲精彩无码天堂| 中文字幕影片免费人妻少妇 | 亚洲尺码电影av久久| 免费在线观看亚洲视频| 一区二区三区高清在线观看视频| 成人久久久久久久久久久|