一、基础线段构成
先画一条最基本的线段:
pro Grpolyline
oWindow=Obj_new('IDLgrWindow',dimension=[800,600]) ;初始化窗口,800*600大小
oView=IDLgrView()
oModel=IDLgrModel()
oView.Add,oModel
x=[-1,1] ;使用归一化坐标系
y=[1,-1] ;正中心为坐标轴,上下组成一个点(x,y)
oPolyline=Obj_new('IDLgrPolyline',x,y)
oModel.add,oPolyline
owindow.draw,oview
end
效果:
原理:
使用归一化坐标系,X和Y轴的取值范围都在[-1,1]之间。
上述代码中的 x=[-1,1] 与 y=[1,-1] 会构成两个点
- 取 x 第一个值和 y 第一个值组成(-1,1),是左上角这个点
- 取 x 第二个值和 y 第二个值组成(1,-1),是右下角这个点
二、线段属性修改
oPolyline.SetProperty,COLOR=[255,0,0] ;修改颜色
oWindow.Draw,oView
oPolyline.SetProperty,THICK=5 ;修改线段粗细
oWindow.Draw,oView
效果:
还有其他属性,不一一列举,可查询官方帮助文档。
三、绘制折线
data=FLTARR(2,4) ;二维数组,共4个顶点
data[0,*]=[-0.5,-0.5,0.5,0.5];x轴
data[1,*]=[-0.5,0.5,0.5,-0.5];y轴 正中心为坐标原点
oPolyline.SetProperty,DATA=data;默认按索引递增顺序进行绘制
oWindow.Draw,oView
效果:
原理:
仍然采用归一化坐标系。
上述 data 数组组成4个顶点,不指定顺序时他默认按数组递增顺序对这些顶点进行连接绘制。
我们也可以指定特定的连接顺序:
polylines=[4,0,1,3,2];4个顶点,将上述data的数据按这个0132下标索引的顺序进行链接
oPolyline.SetProperty,POLYLINES=polylines
oWindow.Draw,oView
polylines 数组中的第一个值“4”表示后面会出现4个顶点,0、1、3、2是上面 data 数组的索引(也可以等效指代为某一个顶点),将 oPolyline 的 POLYLINES 属性设置完后,绘制出来就是这种效果:
POLYLINES 属性还有其他用法,比如:
绘制封闭图形:
polylines=[5,0,1,2,3,0]
oPolyline.SetProperty,POLYLINES=polylines
oWindow.Draw,oView
把四个顶点按0-1-2-3-0的顺序连接,就绘制了个矩形。
也可以画十字线:
polylines=[2,0,2,2,1,3];可以写多个,比如这里面就是两组数据,是两条线段
oPolyline.SetProperty,POLYLINES=polylines
oWindow.Draw,oView
polylines中写了两组数据,分别是
- 2,0,2 表示有两个顶点,由第0个连向第2个
- 2,1,3 表示有两个顶点,由第1个连向第3个
还可以画组合的:
polylines=[5,0,1,2,3,0,2,0,2,2,1,3]
oPolyline.SetProperty,POLYLINES=polylines
oWindow.Draw,oView
我们还可以用线对象画各种多边形,比如
四角形链接 三角形链接
我们只需要定好各个顶点后再组织一下线段的连接方式就行,比如这个四角形链接可以用这种方式:
不过,关于多边形的绘制,IDL有专门的对象 IDLgrPolygon 来处理,这个会在下一节写到。
简而言之,polylines 数组可以表明线段的连接方式,由于有些图形不能通过一笔连成,所以他可以在里面填多组数据,每组数据由 顶点数+各详细顶点 组成,这一组绘制完后他会解析下一组。
后记
关于线对象的用法还有它的,比如 polylines 数组的其他限制和用法等等,都可以通过官方文档查询到。
帮助文档可通过在命令行键入英文问号进入。
也可以去安装目录下找:Exelis\IDL83\help\online_help\IDL
用浏览器打开任意一个都可以。