LearningENVI&IDL分享 http://blog.sciencenet.cn/u/dongyanqing Learning ENVI&IDL

博文

IDL中绘制实心三角形

已有 15524 次阅读 2012-5-18 21:41 |个人分类:IDL技术|系统分类:科研笔记| 符号, IDL, 三角形, 对象图形法, 直接图形法


看到了群里有人问这个问题,想了下。可以从直接图形法和对象图形法角度分别实现。

绘制类似的符号,可以通过系统字体的方式,如在Word中单击[插入]-[符号],界面中选择相应符合,如。界面如下:

得到如下信息,字体“Wingdings3”下十进制数值“112”对应的符号是“▲”。IDL中根据这些信息绘制三角形的相关代码如下:

FUNCTION RGB2IDX, RGB

  RETURN, rgb[0] + (rgb[1]*2L^8) + (rgb[2]*2L^16)

END


;直接图形法

  sysFont = !p.FONT

  !P.FONT = 0

  ;创建窗口

  WINDOW,1,xsize = 400,ysize = 300

  ;使用Wingdings 3字体,大小为50(可任意修改)

  DEVICE,set_font = 'Wingdings 3*50'

  ;输出符号

  XYOUTS,0.5,0.5,$

    STRING(112b), $

    /normal,$

    CHARSIZE = 40, $

    color = RGB2IDX([1,1,1]*255)

  ;恢复系统默认参数

  !p.FONT = sysFont

对象图形法下也可以通过调用字体字符的方式来实现,代码如下:

;对象图形法

  oFont = Obj_New('IDLgrFont','Wingdings 3')

  oText = Obj_New('IDLgrText',string(112b),font = oFont)

  Xobjview,oText

 

除此之外,可以通过创建IDLgrPolygonIDLgrPolyline对象的方式来实现,代码如下:

  ;三角形的三顶点坐标

  data = FLTARR(2,3)

  data[*,1] = [2,0]

  data[*,2] = [COS(!PI/3),SIN(!pi/3)]*2

  ;创建多边形对象

  oPoly = OBJ_NEW('IDLgrPolygon',data,color = [255,0,0])

  XOBJVIEW,oPoly

 





https://blog.sciencenet.cn/blog-344887-572525.html

上一篇:老外网站上的IDL学习教程
下一篇:IDL下保存数据为ENVI格式的方法
收藏 IP: 123.118.155.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-1 12:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部