1.New_Uri()方法實際返回給MapBasic的是什么?它是URI對象還是。NET對圖像的引用?
例如:
調用SetRbnBtnCtrlSmallIcon(BA_Btn,New_Uri(“pack://addinorigin:,,,/d:\Core\Scripting\Libraries\btnImageLib.dll;component/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的絕對路徑
調用SetRbnBtnCtrlSmallIcon(BA_Btn,New_Uri(“pack://addinorigin:,,,/C:\inetpub\wwwroot\biz_e_asset\AMS_Final\AMS_Final_scripts\Libraries\BARresources.dll;component/Images/ButtonImages/Tools/Trace/TraceSetDistanceLg.png“,0))
但是,當使用服務器路徑而不是驅動器號路徑時,如以下所示:
調用SetRbnBtnCtrlSmallIcon(BA_Btn,New_Uri(“pack://addinorigin:,,,/\\CSVR3\AMS_Final$\AMS_Final_scripts\Libraries\BARresources.dll;component/Images/ButtonImages/Tools/Trace/TraceSetDistanceLg.png“,0))
它拋出一個錯誤,看起來New_Uri()方法將其解釋為相對路徑。
要使用網絡路徑,您必須提供這樣的路徑,并且運行應用程序的用戶需要對UNC路徑具有修改權限。
調用SetRbnBtnCtrlSmallIcon(BA_Btn,New_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位版本12至16.0.0中,我們無法使用此功能,因為它不存在。
如果我在我的一個庫中,在上面的MapInfoPro版本中,創建一個方法,返回一個具有MapBasic語法的URI對象,這能工作嗎?
從Pro的16.0.1版本中添加了對從dll加載圖像的支持。
在較舊的MapInfo Pro版本中,即使提供MapBasic語法,也無法從功能區上的dll加載圖像。