Yush
我一直是用MapX写的写MapInfo公司Tab格式的文件,但是由于涉及到大量的图元绘制,MapX的绘制速度是受到限制的,其绘制的速度并不快,于是探索是不是有比他更好的组件。前段时间曾经用过ShapeLib来绘制shp文件,其绘制的速度还是相当可以的,有兴趣的话可以搜搜,其提供的开源包中有实例程序,怎么来用。
而我今天要介绍的这个Mitab开源包中,并没有提供可以直接运行能看到效果的实例Demo,于是我开始了解如果在dot net程序中使用他。
Mitab开源项目是采用C++编写的库,其编译了mitab.dll文件,我们用他的功能也主要从这个dll中调用功能。但不是单纯的添加引用或者添加一个这个dll为控件能解决问题的,要用好这个dll,不得不继续分析他的开源包,在MiApi.cs文件中,有很多的[DllImport("mitab.dll")]语句,于是我明白了如何应用,下面来介绍他的应用步骤。
第一步:新建一个C#桌面应用程序;
第二步:添加开源库中的MiApi.cs和MiWrapper.cs两个类到程序中。
第三步:拷贝mitab.dll到程序的.exe的目录中,因为[DllImport("mitab.dll")]就是要查找系统运行的目录中是否存在这个dll文件,所以一定要拷贝。
第四步:写生成Tab文件的函数,调用MiApi.cs中函数。具体如何应用这些函数,请参考开源包中的mitab_vb_test.vb这个文件。
第五步:运行程序,生成Tab,搞定。
附我写的一个demo实例代码。
- public void testWritefile()
- {
- WriteFile("D://11//testtab.tab", "tab");
- }
- private void WriteFile(string pszDest, string pszMifOrTab)
- {
- long dataset;
- long feature;
- double[] x = new double[100];
- double[] y = new double[100];
- long field_index;
- string sTmp;
- long i1;
- long i2;
- dataset = (long)EBop.MapObjects.MapInfo.MiApi.mitab_c_create(pszDest, pszMifOrTab, "CoordSys Earth Projection 1, 0", 90, 0, 180, -180);