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