|||
看到了群里有人问这个问题,想了下。可以从直接图形法和对象图形法角度分别实现。
绘制类似的符号,可以通过系统字体的方式,如在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 |
除此之外,可以通过创建IDLgrPolygon或IDLgrPolyline对象的方式来实现,代码如下:
;三角形的三顶点坐标 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 |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-1 12:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社