1.New_Uri()方法實際返回給MapBasic的是什么?它是URI對象還是。NET對圖像的引用? 

 

例如:

 

調(diào)用SetRbnBtnCtrlSmallIconBA_BtnNew_Uri“pack://addinorigin:,,,/d:\Core\Scripting\Libraries\btnImageLib.dllcomponent/Images/Tools/Options/OptionOneSm.png“0))


這是MapBasic中的.net URI類構(gòu)造函數(shù)聲明,它基本上調(diào)用URI類的構(gòu)造函數(shù)。 

  

2.它實際上是如何工作的?它是否從dll中獲取每個圖像并將其加載到內(nèi)存中,然后以某種方式引用它?

 

這將從URI加載dll,然后將指定的圖像作為字節(jié)流從dll加載到內(nèi)存中。


3.我還沒有仔細(xì)閱讀MapBasic V16.0.1文檔,但New_Uri()主要用于獲取圖像嗎?


New_Uri()只是調(diào)用Uri類的構(gòu)造函數(shù)并創(chuàng)建它的對象

 

它也可以用于需要Uri的普通.net函數(shù)中。

 

4.當(dāng)用下面這樣的本地路徑形成URI時,它工作得很好,它形成了dll的絕對路徑

 

調(diào)用SetRbnBtnCtrlSmallIconBA_BtnNew_Uri“pack://addinorigin:,,,/C:\inetpub\wwwroot\biz_e_asset\AMS_Final\AMS_Final_scripts\Libraries\BARresources.dllcomponent/Images/ButtonImages/Tools/Trace/TraceSetDistanceLg.png“0))


但是,當(dāng)使用服務(wù)器路徑而不是驅(qū)動器號路徑時,如以下所示:

 

調(diào)用SetRbnBtnCtrlSmallIconBA_BtnNew_Uri“pack://addinorigin:,,,/\\CSVR3\AMS_Final$\AMS_Final_scripts\Libraries\BARresources.dllcomponent/Images/ButtonImages/Tools/Trace/TraceSetDistanceLg.png“0))

 

它拋出一個錯誤,看起來New_Uri()方法將其解釋為相對路徑。

 

要使用網(wǎng)絡(luò)路徑,您必須提供這樣的路徑,并且運(yùn)行應(yīng)用程序的用戶需要對UNC路徑具有修改權(quán)限。

 

調(diào)用SetRbnBtnCtrlSmallIconBA_BtnNew_Uri“pack://addinorigin:,,,/file://CSSVR3/AMS_Final/ams_final_scripts/Libraries/BAResources.dll;component/Images/ButtonImages/Tools/Trace/TraceSetDistanceLg.png“0))


addinorigin是我們用于包URI和從dll加載圖像的自定義權(quán)限。


此外,從帶有空格的路徑加載程序集將失敗,這已被確定為錯誤,因為我們在加載程序集時沒有取消轉(zhuǎn)義URI字符串。 

 

5.MapInfo Pro 64位版本1216.0.0中,我們無法使用此功能,因為它不存在。

 

如果我在我的一個庫中,在上面的MapInfoPro版本中,創(chuàng)建一個方法,返回一個具有MapBasic語法的URI對象,這能工作嗎?


Pro16.0.1版本中添加了對從dll加載圖像的支持。

 

在較舊的MapInfo Pro版本中,即使提供MapBasic語法,也無法從功能區(qū)上的dll加載圖像。