IDL 对象图形法 二维图形类(一):线对象 IDLgrPolyline用例解析

一、基础线段构成

先画一条最基本的线段:

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

用浏览器打开任意一个都可以。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值