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加载图像。