gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:18752回复:31

MAPGIS二次开发基础知识

楼主#
更多 发布于:2004-10-26 21:02
<b>
</b>一、手动注册组件与注销组件


<P>COM以及客户应用程序所需的、用来定位组件及对组件进行实例化的信息存储在
Windows的注册表(Registry)里。因此,在使用组件之前要对组件进行注册,
只有成功注册才能引用该组件,其具体步骤为:</P>
<P>1.将包容组件的DLL文件放入MAPGIS PROGRAM 目录下,假设物理路径为:
   D:\mapgis65\program\ MapGisBasCom1.dll</P>
<P>2.运行注册表程序注册组件 Windows开始菜单-〉运行:
   regsvr32 D:\mapgis65\program\MapGisBasCom1.dll 注册成功与否将有对话框弹出。</P>
<P>3.注销该组件方法为:
   regsvr32 /u D:\mapgis65\program\MapGisBasCom1.dll</P>
<P>二、Visual Basic中嵌入对象类型库</P>
<P>为了使Visual Basic能够访问MAPGIS对象定义,应该在Visuai Basic项目或模块中嵌入
MAPGIS对象类型库。如果想把一个Visual Basic对象声明为MAPGIS对象类型,要求嵌入
MAPGIS对象类型库, 如果想把一个Visual Basic对象声明为一般Object类型,就不必嵌
入MAPGIS对象。</P>
<P>为了在项目中嵌入MAPGIS对象类型库,通常执行这些步骤:
从Project(工程)菜单, 选择References, References对话框出现, 选中复选框嵌入
MapGisBasCom1 Type Library文件。这要求VisualBasic环境或代码模块编辑器是活动
的,正在运行。</P>
<P>三、使用MAPGIS对象</P>
<P>可以使用Visual Basic编写使用MAPGIS对象的程序。在Visual Basic程序中使用MAPGIS对
象所要求的步骤是:</P>
<P>1.嵌入MAPGIS对象类型库。</P>
<P>2.建立一个MAPGIS对象。</P>
<P>3.使用MAPGIS对象和包含的其他对象。</P>
<P>4.释放MAPGIS对象。</P>
<P>使用一个句点(.)把对象变量与该对象的属性、方法和集合分开。</P>
<P>四、使用C++和COM函数</P>
<P>可以使用C++和COM函数编写使用MAPGIS对象的程序。在C++程序中使用
MAPGIS对象所要求的步骤是:</P>
<P>1.嵌入MAPGIS对象和COM头文件,并链接到COM库。</P>
<P>2.初始化C0M库。</P>
<P>3.建立一个MAPGIS对象。</P>
<P>4.使用MAPGIS对象和包含的其他对象。</P>
<P>5.释放MAPGIS对象。</P>
<P>6.解除C0M库的初始化。</P>
<P>使用成员选择运算符(->)把“对象指针”变量与属性、方法和集合函数分开。
嵌入MAPGIS对象
对MAPGIS对象编程的第一步是在项目中嵌入合适的类型库或头文件。
完整的MAPGIS对象类型库包含在MapGisBasCom1.h文件中,这个文件的默认路径:
D:\mapgis65\include\MapGisBasCom1.h
类型库含有关于所有MAPGIS对象、属性和方法的信息。</P>
<P>五、COM的调用</P>
<P>MAPGIS对象包括ANSI和Unicode这两个定制接口。使用ANSI接口时,所有MAPGIS对象字符
串都是每个字符一个字节的ANSI字符串。使用Unicode接口时,所有MAPGIS对象字符串都
是每个字符两个字节的Unicode字符串。所有MAPGIS对象字符串都使用====BSTR字符串数
据类型。</P>
<P>默认情况下使用ANSI定制接口和ANSI ====BSTR字符串。如果想使用Unicode定制接口和
Unicode =====BSTR字符串,在嵌入所有头文件之前必须定义UNICODE和_UNICODE。</P>
<P>例如:
#define UNICODE
#define _UNICODE</P>
<P>在字符串值两端使用TEXT(“str”)宏。默认情况下,这些是ANSI“Str”字符串。在定
义了UNICODE和_UNICODE时,这些是Unicode L“Str”字符串。在32位0LE中,所有BSTR字
符串是Unicode字符串。为了使C++程序能够访问MAPGIS对象定义,除了嵌入Windows和
0LE头文件之外,还必须嵌人MAPGIS==.H和MAPGIS==.H头文件。默认情况下,MAPGIS头文
件位于======\INCLUDE目录中。</P>
<P>Visual C++项目的Include设置或INCLUDE环境变量应指向含有这些文件的目录。
必须嵌入以下头文件:
1. MapGisBasCom1_i.c
2. MapGisBasCom1.h</P>
<P>例如:
#include "MapGisBasCom1_i.c"
#include "MapGisBasCom1.h"</P>
<P>Visual C++项目的Library设置或LIB环境变量应指向含有这些文件的目录。</P>
<P>六、初始化COM库</P>
<P>在程序能使用MAPGIS对象之前,必须初始化C0M库。</P>
<P>Visual Basic
MAPGIS程序不必初始化COM,Visual Basic自动初始化C0M库。</P>
<P>C++
所有MAPGIS COM函数都返回一个HRESULT值,这个值含有关于MAPGIS COM函数的成功或失败
的信息。可以声明单个HRESULT变量并重复利用它。例如:
HRESULT hr;
在调用任何MAPGIS或COM函数之前, MAPGIS程序必须使用COM CoInitialize函数初始化COM
库。例如:
hr=CoInitialize(Null);
必须把NULL传递给CoInitialize。</P>
<P>七、建立MAPGIS对象</P>
<P>MAPGIS组件的核心是MAPGIS对象。</P>
<P>Visual Basic
在Visual Basic 中有2个方法用于建立MAPGIS对象,这2个方法都涉及使用Dim 语句声明
特定类型的对象变量。
特定的MAPGIS对象类型
常用的方法(如果使用的Visual Basic 版本支持它)是使用Dim语句声明特定MAPGIS对象
对象类型的对象变量,这个方法要求MAPGIS类型库包括在Visual Basic项目中。为了实际
建立一个MAPGIS对象的新实例.可以在Dim语句中使用New关键字(如果使用VisualBasic版
本支持它的话)或者使用CreateObject函数。</P>
<P>例如,使用New关键字创建新的MAPGIS对象的语句是:</P>
<P>Dim ldot As New L_DOT</P>
<P>例如,使用CreateObject函数声明和创建一个新的MapGis对象:</P>
<P>Dim ldot As L_DOT
Set ldot = CreateObject("MapGisBasCom1.L_DOT")</P>
<P>有些版本的Visual Basic 使用虚函数表绑定(vtable-binding),或早期绑定。直接使用
MAPGIS定制接口(不通过COM IDispatch接口),产生最好的性能。</P>
<P>有些版本的Visual Basic使用推迟绑定的形式,叫做分派ID绑定(dispID,binding),它使
用COM IDispatch。IDispatch ::Invoke 函数与在MAPGIS类型库中包括的dispID一起使
用。这种方法使应用的性能没有使用New关键字那样快.但比使用Object类型快。</P>
<P>八、在C++中建立MAPGIS对象</P>
<P>在C++中只有一种方法建立MAPGIS对象,声明合适的MAPGIS“对象指针"类型的对象变量,然
后使用COM CoCreateInstance函数建立MAPGIS对象的新实例。把以下参数传递给CoCreateInstance:
1. MAPGIS对象的类ID
2. NULL
3. CLSCTX_INPROC_SERVER
4. MAPGIS对象的接口ID
5. MAPGIS “对象指针”变量的地址(使用;运算符的地址)。
例如,要建立一个新的ID_Dot  MAPGIS对象:
 IPntArea *ptPAi;
 hr=CoCreateInstance(CLSID_PntArea,
      NULL,
      CLSCTX_INPROC_SERVER,
      IID_IPntArea,
       (void**);ptPAi);
注意:一个多线程程序,必须串行化对MAPGIS对象的所有访问,以避免重入.</P>
<P>九、函数库名称
函数库名称                            c,c++说明文件
工作区基础函数                        Win_area.h
矩形图框函数                          frmdll32.h
投影类库                              projdll.h
控制点操作                            w32_cpnt.h
状态栏显示点转换以及工作区投影函数    cordcvt.h
图形显示输出                          Map_out.h
                                      win_out.h
工程对象操作函数以及拼版文件操作函数  Map_prj.h
编辑工程文件                          Prj_Disp.h
图例和工程文件操作函数                Project.h
图像显示函数                          Mapdisp.h
图像编辑函数                          Mapedit.h
输入编辑子系统类库                    CGisEdit.h
                                      CPrjEdit.h
拓扑操作函数                          Gistopo.h
图元以及剪贴板操作函数                clippaste.h
UNDO 处理数据及成员函数               gistool.h
窗口操作函数                          CGisView.h
GisView对象函数                       Win_oper.h
空间分析函数                          Spc_anly.h
各种头文件                            MapGis.h</P>
<P>十、怎样用vb对mapgis进行二次开发,不知道怎样将二者联系起来
       Vb开发三种方式:
       MAPGIS API开发库
       通过调用应用程序接口直接编程</P>
<P>       MAPGIS 可视控件(ocx)</P>
<P>       MAPGIS 组件开发(com)
       通过控件和组件编程</P>
<P>       如何创建MAPGIS对象
       Dim workai As NEW PntArea
       Dim workai As PntArea
       Set workai = CreateObject(“MapGisBasCom1.pntarea”)
       三种方式可以互为补充。</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2004-10-26 21:02
前MAPGIS二次开发库主要以API函数、MFC类库、ActiveX 控件三种方式提供。开发库被封装于若干动态链接库(DLL)中。
API函数在使用方法上与Windows的API函数完全一样,因此是独立于开发工具的。无论您使用VC++、VB还是Dephi…,您在这些工具中如何调用Windows的API函数,您就怎么调用这些二次开发函数。
MAPGIS类库是为基于MFC(Microsoft Foundation Class)的开发者提供的多个可重用基类,将应用程序所需的常见基本功能作了封装,使用便利,改动灵活。开发者只需从类库派生即可使自己的程序获得从窗口显示控制到图形查询编辑的各项功能。
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2004-10-26 21:04
VC部分
*******************************************************************
问题:
求救点操作
用_AppendPnt();向已有的文件中添加一个点,并显示出来(单文档)
谢谢!
<P>回复:
打开点工作区
装载文件
重载视图的_OwnerDraw()显示该点文件
添加点_AppendPnt()
  long  _AppendPnt(short ai,D_DOT *xy,char *dat,short len,PNT_INFO *inf ,short dim=2)
    参数:入口  ai   - 工作区号
                 xy   - 点坐标位置
                 *dat - 点内容
                 len  - dat数据长度(字节为单位)
                 *inf - 点图形信息
                 dim  - 点的维数
          出口   无
  返回值 成功返回点号(>0),失败返回0
UpdateWindow()
*******************************************************************
问题:
查询点区叠加后,区的外部的点的函数是什么啊?</P><P>回复:
_RegAskToArea(short ai0,short ai1,short type,short ai2,short outFlg=0)
函数中将outFlg传1即可。
*******************************************************************
问题:
求某区中的点图元,是什么函数???????</P><P>回复:
_RegAskPntToArea(short ai0,short ai1,short ai2,short outFlg=0)
*******************************************************************
问题:
mapgis:如何计算某个点(X,Y)到某条线的最短距离? </P><P>回复:
计算点到线之间的距离
     double _DistofPntToLin(D_DOT *pnt,D_DOT *lxy,long len)</P><P>     参数:入口   *pnt - 点坐标</P><P>              *lxy - 线上点坐标数组地址</P><P>              len  - 线上点坐标数组长度</P><P>           出口   无</P><P>   返回值 成功返回距离,<= 0失败
*******************************************************************
问题:
用_AppendPnt();向已有的文件中添加一个点,并显示出来(单文档)</P><P>回复:
打开点工作区
装载文件
重载视图的_OwnerDraw()显示该点文件
添加点_AppendPnt()
  long  _AppendPnt(short ai,D_DOT *xy,char *dat,short len,PNT_INFO *inf ,short dim=2)
    参数:入口  ai   - 工作区号
                 xy   - 点坐标位置
                 *dat - 点内容
                 len  - dat数据长度(字节为单位)
                 *inf - 点图形信息
                 dim  - 点的维数
          出口   无
  返回值 成功返回点号(>0),失败返回0
UpdateWindow()
*******************************************************************
问题:
我在VC中使用CGisEditView派生CMyView类,
在CMyView中我使用从CGisEditView中继承的方法,
LoadLine();是只打开一个线文件但是不能编辑,
而 AppendLine();打开的一个线工作区文件是可以编辑的,
我在调用了AppendLine();是不是CGisEditView类自动初始化工作区和
自动处理工作区有改变后,关闭时有提示呢?
我如果想自己创建一个新的工作区是不是要使用API函数呢?
CGisEditView提不提供创建一个新的工作区的操作?</P><P>回复:
创建新的工作区需要先申请工作区实例句柄
然后用这个实例句柄开一个工作区,得到一个工作区号
再装载文件
AREA_HINST _InitWorkArea(HINSTANCE hInst);
short  _OpenArea(AREA_HINST hInst,short type);
short _LoadAFile(char *datName,short ai,char *szDSN=NULL,char *szLOG=NULL,char *szPSW=NULL);</P><P>CGisEditView提供三个缺省的点、线、面工作区,因此可以直接打开文件,并显示(CGisEditView::LoadLine)。
如果要让CGisEditView能够显示和编辑由_OpenArea打开的工作区,需要调用CGisEditView的成员函数
CGisEditView:: SetEditArea()将由_OpenArea打开的工作区设置成编辑工作区。
*******************************************************************
问题:
我用VC进行二次开发,请问图幅接边的函数在哪个头文件里,有哪位知道请帮忙,谢谢!</P><P>回复:
图库管理的应用都包含在头文件Dbs_View.h中。
*******************************************************************
问题:
CGisEditview中如何打开工程文件啊!</P><P>回复:
在Map_prj.h中可使用以下函数:
      
       MAPPROJECT WINAPI  _PRJLoadProject(AREA_HINST aInst=0,short fastOpen=0);
      
      MAPPROJECT WINAPI  _PRJLoadAProject(char *name,AREA_HINST aInst=0,short fastOpen=0);
*******************************************************************
问题:
已知圆点(X,Y)和半径R,想把它添加到一个工作区中?如何做?
_AppendLin()好象不可以吧?F_DOT怎么设定?</P><P>回复:
    先用_AppendLin函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说 D_DOT *dat,
这里dat的空间需自己申请,其长度为 long len,线的参数是 LIN_INFO inf,需要赋值,short ai为区工作
区号,long i 为弧段号。然后调用:
 i = _AppendLin(ai,dat,len,;inf);
输入弧段。然后添加区域
    入口: ai    - 区工作区号
  long rdat[2] - 区域数据块
rdat[0] = 1(弧段个数),rdat[1]= i     (i 为弧段号)
  rinf   - 区域图形信息,需要赋值
然后调用:
      _AppendReg(ai,rdat,2,;rinf);
*******************************************************************
问题:
空间分析——等值线(急)
在DTM分析中。进行离散网格化后(坐标范围已定),做平面等值线绘制,结果x范围没变。y范围变大。也就是说压扁了。求救,急啊! </P><P>回复:
你应该确定数据范围的变化是在哪个阶段发生的!</P><P>1.你首先确定网格化过程结束后数据范围是否发生变化?</P><P>2.等值线绘制时,"制图幅面"选择"原始数据范围",再试试.
*******************************************************************
问题:
请教各位大侠,logcount和count的区别?含义分别是什么?</P><P>回复:
逻辑数:工作区中没有被删除的实体或者记录的个数。
物理数:工作区中所有的实体或者记录的个数,包括那些从被删除了的实体或者记录。
有如下等式:
物理数=逻辑数+被删除的个数+1
*******************************************************************
问题:
我在GIS开发中遇到要利用程序在地图管理系统操作下自动添加两点连线问题,如图幅1和图幅6之间任意两点连
线请问如何解决?
是本地库管理,1和6只是举例,实际情况不一定是1和6,故有可能两图幅相邻也可能不相邻。
图库为每层16图幅,要完成的功能是根据给出的点位置信息自动再各点间连线以显示点移动路径(即两点连线)
,我再普通情况下(非库管理)根据起始结束点位置直接添加线便可以了,但在图库管理中因为原来的整图被
切成几块有时连线启终点不在同一图幅中那如何添加线呢?</P><P>回复:
其实你完全可以开辟一个工作区来保存路径,然后在地图库显示后显示该工作区。不用把它放入地图库中。
*******************************************************************
问题:
请问向网络文件(.wn)中添加一个节点和一条线用什么函数?谢谢!</P><P>回复:
添加结点:
long _AppendNod1(short ai,D_DOT *xy,long *dat,short len,char *infdat,
short inflen,PNT_INFO *inf,short dim=2)
添加线:
long  _AppendLin(short ai,D_DOT *dat,long len,LIN_INFO *inf,short dim=2)
*******************************************************************
问题:
如何判断两条线是否相交?又如何遍历网络文件(.wn)中的各个节点呢?</P><P>回复:
先调用short  _GetNodNum(short ai,long *logN,long *n)得到结点物理数n
for(i=1;i<n;i++)
{
int _GetNod1(short ai,long ni,D_DOT *xy,long **dat,short *len,
char **infdat,short *inflen,PNT_INFO *inf,short dim=2)
}
*******************************************************************
问题:
如何在对话框的ListCtrl的单元中绘制MAPGIS的区填充颜色、图案,用于在视图中区元填充之
前进行预览和选择。</P><P>回复:
自己重绘ListCtrl。在DrawItem函数中绘制每一个Item的图形(用MyDC)。
*******************************************************************
问题:
如何用函数_GetLin(short ai,long li,D_DOT  **dat,long *len,LIN_INFO *inf,short*dim=NULL)
得到这条线的两个端点?参数len指的是什么?多谢!!</P><P>回复:
dat是组成该线的点的数组,len就是该数组的个数,即该线的点数
*******************************************************************
问题:
如何实现rgb颜色与cmyk颜色的相互转换??</P><P>回复:
在Map_Out.h中
//RGB->MAPGIS颜色号
OUTEXPORT short WINAPI_FindNearColor(int r,int g,int b);//返回颜色号0表示失败</P><P>//MAPGIS颜色号->RGB
OUTEXPORT short WINAPI_GetAColorRGB<I>value</I>(int cno,int *g,int *b);//返回0/1 失败/成功</P><P>//MAPGIS颜色号->CMYK
OUTEXPORT short WINAPI_GetAColorCMYK<I>value</I>(int cno,int *k,int *c,int *y);</P><P>//CMYK->MAPGIS颜色号
OUTEXPORT short WINAPI _FindNearCMYKColor(int k,int c,int m,int y);//返回颜色号0表示失败
*******************************************************************
问题:
我创建了一个从CPejEditView派生的视图的单文档程序,希望完成以下操作:先显示一个工程文件a.mpj,
然后换一个工程文件b.mpj,最后又重新显示a.mpj;但在第二次调用_loadaproject函数装入a.mpj时,提示
文件已经打开,但还是能正确显示,这是什么原因?有没有办法加快打开mpj的速度?</P><P>回复:
在装入一个新的工程时,应该把已经打开的工程文件删除掉(用_PRJDeleteProject),否则工程对象占驻
内存没有释放,再次打开时会提示“XX文件已经装入”,而且会造成内存泄漏。
如果想要提高打开工程的速度,可以在关闭工程文件时把相应的文件状态改为“关闭状态”或者“打开状态”
即可。因为打开工程的时候,如果文件上次存盘是“编辑状态”或者“当前编辑状态”,那么会打开工作区,
如果这样的文件过多或者过大,都可能导致打开工程文件过慢。
*******************************************************************
问题:
请问在程序中用函数_PRJDelete删除工程文件后,如何从PrjListView视中删除相应的Item项?</P><P>回复:
PrjListView中有一个函数ReloadPrjItems可以更新显示PrjListView。
*******************************************************************
问题:
小弟是二次开发的新手,有一个很简单的问题想请教各位前辈。小弟使用win2000+vc6和sdk62为开发环境。
新建一mdi程序,打开了一个面文件,想在一个新的子窗体中显示当前鼠标所选中的哪个图斑,请问怎么解决。
谢谢</P><P>回复:
void CTeachDemoView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
    //......
    _WpToLp(;point, ;Dot);
    regNo = _SeekReg(ai, ;Dot, NULL, 32); //双击鼠标选中的区
    if(regNo>0)
    {
    //......
    }
}
新的子窗口中的View重载CGisView的_OwnerDraw函数
在里面调用
_DispReg(MyDC mdc,short ai,long gno,long col=0);
绘制你在原窗体中得到的图斑。
*******************************************************************
问题:
点xy所在的区域位于另一个区域上,我要查找点xy位于哪个区域里,可是总是显示位于那个大区域,而不是小区域,请问这是怎么回事?
   dim rai as regarea
   Dim xy As D_Dot
    Set xy = New D_Dot
  dim lno as long
..........
  lno=rai.seek(xy)</P><P>回复:
这种情况我们需要以下函数
            
short  _IsDotInReg0(long regNum,D_DOT *xy,long *ne,D_DOT *dot,short flg,double esp)</P><P>short  _IsDotInReg(long regNum,D_DOT  *xy,long *ne,D_DOT *dot,short flg)</P><P>short  _IsDotInReg1(D_DOT *dot,short ai,long ri,short flg)</P><P>参数:入口       *xy      - 区域边界坐标数据串;</P><P>                 ai   - 工作区号</P><P>                 ri   - 区域号</P><P>                 *ne      - 区域边界每一圈点数</P><P>                 *dot - 判断点坐标</P><P> Flg  - 是否判断内圈标志,1/0:判断/不判断。即flg=1时,要严格判断点是</P><P>否落在区域内,若落在区域的空洞内,也认为是落在区域外边</P><P> Esp  - 允许在区域上的限度</P><P>          出口  无</P><P>  返回值 dot点在区域内返回2,在边线上返回1,在区域外返回0
*******************************************************************
问题:
请问:GisAttEdit与EditGisAtt有什么区别?还有EdtAttStruc与AttStruEdit的区别</P><P>回复:
GisAttEdit和控件主要用来浏览和编辑MAPGIS属性数据
AttStruEdit控件主要用来浏览和编辑MAPGIS属性结构
现在用的都是以Edit结尾的控件。记住是“××××编辑控件”,就知道该用GisAttEdit
和AttStruEdit,就不会弄混了
*******************************************************************
问题:
ATT_STRU AttStru;
我试图通过函数_GetPntAttStru(pai,;AttStru) 来取得点的信息,可是编译时,体是找不到该
结构体,后来我填加头文件#include "Att_Sta.h",提示找不到该文件,我的SDK的版本号为6。5,
请高手告诉我这种方法是否可行,为什么出现此情况,如果行不通的话,有没有其他的办法,
谢谢,急!</P><P>回复:
方法一
char *att;
long pn;
ATT_STRU *stru = NULL;//要定义成指针
_GetPntAtt(pai,pn,;stru,;att);//获得结构</P><P>方法二
char *att;
long pn;
CATT_STRU *stru = NULL;//要定义成指针
_GetPntAtt(pai,pn,;stru,;att);//获得结构</P><P>问题:
编译时总是提示找不到ATT_STRU或CATT_STRU?</P><P>回复:
直接包win_area.h就可以了。
*******************************************************************
问题:
我试着设置了editview1.setwinmaprange
可是没什么用啊,怎么才能一打开工程文件就可以全景显示?就是1:1显示,用restorewindow也没有用
还有一个小小问题,editview点右间就出来的放大缩小功能我想把它加在工具栏里可是没找到函数,函
数在哪里?如果用setdispparm怎么能保证放大缩小比例和右建的比例是一样的?</P><P>回复:
复位都不行,说明你的工程中包含有没有图元的工作区,你看看。
要么把这些文件去掉,要么重新算一下有图元工作区的外包络矩形,在调用setwinmaprange。应该就可以了。</P><P>放大 zoomin
缩小 zoomout
*******************************************************************
问题:
就是类似于子图输出、字符串的函数如mapgisdc.dispsubgr</P><P>回复:
填充图案是用来填充区域的。要输出,也只能输出区</P><P>问题:
可是偶是想把它画到别的地方做预览,难道还要先生成区文件再把里面的地块画出来?</P><P>回复:
直接在你要画的地方用_PolyGon绘制多边形(区)。
绘制之前用_SetBrush设置一个你需要的图案的刷子即可。
绘制完成以后再用_CleanBrush函数清除画刷子
void _PolyGon(MyDC mdc,D_DOT *lxy,long *ne,int na);
    参数:入口        hdc        - 显示对象句柄
                            *lxy      - 区域边界坐标数组,坐标值为设备坐标
                            *ne              - 边界坐标点数数组
                            na       - ne数组项数
                出口  无
       返回值:    无</P><P>设置绘图填充刷子
void _SetBrush(MyDC mdc,long bcol, short pno=0, double phei=1,long pcol=0);
    参数:入口  mdc            - 显示对象句柄
                bcol     - 显示底色
                pno    - 图案编号(为0则不填充图案)
                phei           - 图案高度  
                pcol           - 图案颜色
          出口  无
       返回值:    无
说明:这个函数影响所有与填充有关的使用Brush的函数,如画填充圆,画填充多边形等。
使用结束后,要用_CleanBrush函数清除画刷</P><P>清除刷子
void _CleanBrush(MyDC mdc);
    参数:入口  mdc         - 显示对象句柄
          出口  无
       返回值:    无
*******************************************************************</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2004-10-26 21:04
<TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=blod height=25>→下载园地</TD></TR><TR><TD class=colorchen height=25>用户大会论文集下载(PDF格式): </TD></TR><TR><TD class=hanggao2 height=25><P>·<a href="http://www.mapgis.com.cn/xiazai/1_1.ZIP" target="_blank" >用户大会论文集1.1</A>〈下载1,172KB〉
·<a href="http://www.mapgis.com.cn/xiazai/2_1.ZIP" target="_blank" >用户大会论文集2.1</A>〈下载212KB〉
·<a href="http://www.mapgis.com.cn/xiazai/2_2.ZIP" target="_blank" >用户大会论文集2.2</A>〈下载230KB〉<FONT color=#ff0000><需安装阅读器Acrobat Reader></FONT></P></TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=colorchen height=25>程序补丁下载: </TD></TR><TR><TD class=hanggao2 height=25><P>·<a href="http://www.mapgis.com.cn/xiazai/SetupUpdate923.zip" target="_blank" >MAPGIS65升级包</A><下载17.2MB 2003-09-23>
·<a href="http://www.mapgis.com.cn/xiazai/Setupsdk.rar" target="_blank" >MAPGISSDK安装<</A>下载17MB 2003-06-28>
·<a href="http://www.mapgis.com.cn/xiazai/mapsuv-test.zip" target="_blank" >MAPSUV-TEST(6.2)<</A>下载2MB 2003-06-09>
·<a href="http://www.mapgis.com.cn/xiazai/TinSDK.zip" target="_blank" >Tin开发函数库</A><下载769K 2001-12-3>
·<FONT color=#ff0000><a href="http://www.mapgis.com.cn/xiazai/AIHEAD.ZIP" target="_blank" >Eps输出头文件</A>(各个版本均可下载)</FONT><下载15K 2001-02-12>
·<a href="http://www.mapgis.com.cn/xiazai/Rural.exe" target="_blank" >土地利用数据库系统更新</A><下载11M 2002-12-02>
 MAPSUV61(MAPGIS61测图版)更新<<a href="http://www.mapgis.com.cn/xiazai/SuvUpdate.zip" target="_blank" >补丁一8411K</A> 、<a href="http://www.mapgis.com.cn/xiazai/SuvUpdate_2.zip" target="_blank" >补丁二660K</A><FONT color=#ff0000>(配合补丁一使用)</FONT>2002-06-10>
·<a href="http://www.mapgis.com.cn/xiazai/color.zip" target="_blank" >光栅化输出颜色配置文件更新</A><下载10K 2002-07-13></P></TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=colorchen height=25>软件演示版下载</TD></TR><TR><TD class=hanggao2 height=25>·MAPGIS-IMS(WEBGIS网络发布系统)<<a href="http://www.mapgis.com.cn/xiazai/MapGis-IMS.part1.rar" target="_blank" >下载1</A> <a href="http://www.mapgis.com.cn/xiazai/MapGis-IMS.part2.rar" target="_blank" >2</A> <a href="http://www.mapgis.com.cn/xiazai/MapGis-IMS.part3.rar" target="_blank" >3</A>(共33M) <a href="http://www.mapgis.com.cn/xiazai/webgis.rar" target="_blank" >帮助</A> 2004-2-23><img src="http://www.mapgis.com.cn/image/new.gif"></TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=colorchen height=25>驱动程序下载:</TD></TR><TR><TD class=hanggao2 height=25><P>·<a href="http://www.mapgis.com.cn/xiazai/EPSON.zip" target="_blank" >EPSON驱动更新下载</A><FONT color=#ff0000>(EPSON Stylus Pro系列大幅面绘图仪)</FONT><a href="http://www.mapgis.com.cn/xiazai/Setupsdk.rar" target="_blank" ><</A>下载32K 2003-11-28><img src="http://www.mapgis.com.cn/image/new.gif">
<a href="http://www.mapgis.com.cn/xiazai/MAPGIS_NTDRV.zip" target="_blank" >MAPGIS_NTDRV</A><FONT color=#ff0000>(MAPGIS加密狗和卡在WINDOWS NT/2000/XP 上驱动程序)</FONT><下载25KB 2000-11-29>
·MAPGIS PCI 插卡的驱动程序<<a href="http://www.mapgis.com.cn/xiazai/PCI_2000.zip" target="_blank" >WIN2000</A>、<a href="http://www.mapgis.com.cn/xiazai/PCI_98.zip" target="_blank" >WIN98</A> 2001-06-21></P>
</TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=colorchen height=25>VB开发下载: </TD></TR><TR><TD class=hanggao2 height=25><P>·<a href="http://www.mapgis.com.cn/xiazai/DEMO.ZIP" target="_blank" >属性数据存取示例</A><下载4KB 2000-12-16>
·<a href="http://www.mapgis.com.cn/xiazai/EditGisAtt.zip" target="_blank" >属性数据编辑控件</A><下载48K 2001-02-19>
·<a href="http://www.mapgis.com.cn/xiazai/HOWTODO.ZIP" target="_blank" >如何使用属性数据编辑控件</A><下载8K 2001-02-19> </P><p></TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=0 width="95%" border=0><TR><TD class=colorchen height=25>二次开发教案及示例:</TD></TR><TR><TD class=hanggao2 height=25><P>·基于windows编程基础知识<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter1_PPT.rar" target="_blank" >讲义1</A> <a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter2_PPT.rar" target="_blank" >2</A> <a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter3_PPT.rar" target="_blank" >3</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter1.rar" target="_blank" >示例931K</A> 2002-11-23>
·MAPGIS基本概念及体系结构<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter4_PPT.rar" target="_blank" >讲义87K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter4.rar" target="_blank" >示例63K</A> 2002-11-23>
·MAPGIS空间数据存取和属性编辑<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter5_PPT.rar" target="_blank" >讲义78K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter5.rar" target="_blank" >示例216K</A> 2002-11-23>
·图形显示输出及窗口操作<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter6_PPT.rar" target="_blank" >讲义83K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter6.rar" target="_blank" >示例162K</A> 2002-11-23>
·图形编辑、类库和控件开发<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter7_PPT.rar" target="_blank" >讲义129K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter7.rar" target="_blank" >示例365K</A> 2002-11-23>
·空间分析和属性查询统计<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter8_PPT.rar" target="_blank" >讲义103K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter8.rar" target="_blank" >示例50K</A> 2002-11-23>
·投影变换、图框生成与工程管理<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter9_PPT.rar" target="_blank" >讲义78K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter9.rar" target="_blank" >示例126K</A> 2002-11-23>
·图库管理及查询统计<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter10_PPT.rar" target="_blank" >讲义111K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter10.rar" target="_blank" >示例281K</A> 2002-11-23>
·MSI开发示例(API)<<a href="http://www.mapgis.com.cn/xiazai/PPT/Chapter11_DOC.rar" target="_blank" >讲义40K</A> <a href="http://www.mapgis.com.cn/xiazai/Demo/Chapter11.rar" target="_blank" >示例61K</A> 2002-11-23></P><P><FONT color=#000000>·</FONT><a href="http://www.mapgis.com.cn/xiazai/DEV_HELP.ZIP" target="_blank" >MAPGIS6.0二次开发函数帮助</A><内含开发手册对照表,下载53K 2001-12-20>
<FONT color=#000000>·</FONT><a href="http://www.mapgis.com.cn/xiazai/controls_help.zip" target="_blank" >MAPGIS6.0开发控件帮助</A><下载310K 2001-08-23> </P></TD></TR><TR><TD class=hanggao2 height=25><P><FONT color=#ff0000>供水管网使用补充说明</FONT></P></TD></TR><TR><TD class=hanggao2 height=58><P>·<a href="http://www.mapgis.com.cn/xiazai/excel.rar" target="_blank" >管网属性数据导出Excel格式</A><PDF格式204K 2004-08-04><img src="http://www.mapgis.com.cn/image/new.gif">
<a href="http://www.mapgis.com.cn/xiazai/gxsj.rar" target="_blank" >管线设计子系统使用指南</A><PDF格式290K 2004-08-04><img src="http://www.mapgis.com.cn/image/new.gif">
<a href="http://www.mapgis.com.cn/xiazai/wlsz.rar" target="_blank" >网络版服务器设置</A><PDF格式214K 2004-08-04><img src="http://www.mapgis.com.cn/image/new.gif"><a href="http://www.mapgis.com.cn/xiazai/01.rar" target="_blank" >
多媒体挂接使用说明</A><PDF格式102K 2003-06-12>
·<a href="http://www.mapgis.com.cn/xiazai/02.rar" target="_blank" >附属数据设置使用说明</A><PDF格式97K 2002-06-12>
·<a href="http://www.mapgis.com.cn/xiazai/03.rar" target="_blank" >实时数据接收使用说明</A><PDF格式129K 2002-06-12> </P></TD></TR></TABLE>
举报 回复(0) 喜欢(0)     评分
desert
路人甲
路人甲
  • 注册日期2004-10-30
  • 发帖数45
  • QQ
  • 铜币78枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-10-30 16:54
<P>好人呀,够我消化好久的</P>
举报 回复(0) 喜欢(0)     评分
echo
路人甲
路人甲
  • 注册日期2004-04-24
  • 发帖数16
  • QQ
  • 铜币138枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-11-03 21:22
<P>全是MAPGIS网站上的,有点新东东没有</P>
举报 回复(0) 喜欢(0)     评分
lsrh
金牌卧底
金牌卧底
  • 注册日期2004-09-08
  • 发帖数316
  • QQ
  • 铜币45枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
6楼#
发布于:2004-11-04 17:59
<P>虽然是拷贝的原版,但为了实现资源共享,为了让没有资料的得到帮助!<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /></P><P> 强烈</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
我们来世不易,要不开心的生活,岂非有负此一生!我命由我不由天,事在人为,做一个生活强者! I LOVE GIS(INCLUE 3S SYSTEM) ,AND YOU?
举报 回复(0) 喜欢(0)     评分
ppccxx
路人甲
路人甲
  • 注册日期2003-11-12
  • 发帖数68
  • QQ
  • 铜币223枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-11-07 06:11
好地方
举报 回复(0) 喜欢(0)     评分
jtljb1
路人甲
路人甲
  • 注册日期2004-11-19
  • 发帖数5
  • QQ
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-11-19 20:10
okkkkkk
举报 回复(0) 喜欢(0)     评分
jtljb1
路人甲
路人甲
  • 注册日期2004-11-19
  • 发帖数5
  • QQ
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2004-11-19 20:23
<img src="http://www.gisempire.com/bbs/Skins/Default/emot/em05.gif">
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部