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

 

例如:

 

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


這是MapBasic中的.net URI類構造函數聲明,它基本上調用URI類的構造函數。 

  

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

 

這將從URI加載dll,然后將指定的圖像作為字節流從dll加載到內存中。


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


New_Uri()只是調用Uri類的構造函數并創建它的對象

 

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

 

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

 

調用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))


但是,當使用服務器路徑而不是驅動器號路徑時,如以下所示:

 

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

 

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

 

要使用網絡路徑,您必須提供這樣的路徑,并且運行應用程序的用戶需要對UNC路徑具有修改權限。

 

調用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加載圖像的自定義權限。


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

 

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

 

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


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

 

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