12IDL入门教程九.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12IDL入门教程九

第九章 编写 IDL 程序 本章概述 尽管IDL是一个程序语言,但在官方的IDL文档里是不可能发现如何编写IDL程序的方法。当然,这并不意味着只有一个正确的方法。任何人,只要了解过那些和我一样的IDL程序员,都知道一个优秀的IDL程序员和一个不是那么优秀的程序之间的差距是很明显的。作为和IDL程序初学者长期打交道的人,作者见过了很多不是很好的程序。 出现这个问题,可以肯定是由于对IDL信息缺乏了解。因为大多数这样的人毕竟是科学家,而不是电脑程序员。他们很聪明,并且在干自己的本行,但他们并不是去编写优秀的电脑程序。 如果只要遵循几条基本的原理,他们编写的程序就会出色,而且对他们自己也更有用。因此,本章就是阐述这几个原理。 本章的任务就是展示怎样编写一个合理的复杂图形演示程序。而且这个程序能从IDL命令行上调用。同时也希望该程序能够将数据显示在可改变大小图形窗口中,从IDL命令行上直接打印,或者直接传送到PostScript文件中。此外,这个程序能够轻松将数据文件保存成GIF或JPEG文件。即使这写程序采用不同的颜色,这个程序应该是具有颜色敏感功能,而且能够和其他程序共存。而且,在程序中增加一个图形界面应该很简单,即使那些对该程序一知半解的用户也可以容易掌握。 再者,这个程序应该维护简单,易扩展。简而言之,该程序应当以模块化方式来编写。尽管可能不清楚为什么要这样做,这里还是有必要介绍以一下面向对象编程的概念,特别是自身模块和方法的概念。如果已经了解这个程序的原理 ,那么就能够毫无困难地理解在IDL5中引进的对象类和方法方面的复杂知识。 基本的ImageBar程序 这个基本程序的思路很简单,即显示图像,在图像周围显示坐标轴。并在此图像的上方绘制一个颜色栏,用来表示图像色彩与其值的相关性。将这个程序取名为Imagebar。结果与图80相似。 图片82:此程序显示了一个由轴环绕的图象,图象上方的色彩栏标出了图像值的范围。 这个程序的基本框架很简单。图像用一个类似于 Tvimage 的命令来显示。(程序Tvimage,如果带关键字Position就可用来定位显示图像。此外,它还可以根据图像输出设备的不同而输出不同大小的图像。详细信息请参阅72页的“用标准化坐标来定位图像”。)坐标轴是用带关键字 NoData 的Plot命令绘制,色彩栏用 Colorbar命令显示的。(程序Coloebar是并与本书配套使用的程序之一。) 注意,如果是在24位颜色环境中运行这个程序,色彩分解应处于关闭状态。详细信息请参阅87页的“在24位颜色环境中指定分解颜色”。要使颜色分解处于关闭状态,键入: IDLDevice, Get_Visual_Depth=thisDepth IDLIF thisDepth GT 8 THEN Device, Decomposed=0 如果愿意,也可将上述代码添加到下面的Imagebar程序中。 新建一个文本编辑窗口,并且给程序命名为ImageBar。其定义如下所示: PRO ImageBar, image 其中,image是要显示的二维图像。 作者喜欢编写简单易懂程序,即使那些不清楚程序如何工作的用户也能够看懂。如果那样,即使用户不知道要将图像作为程序的第一个参数,程序也可以让用户有机会打开并读取一个图像文件。 编写这个程序的目的之一就是能够在 Z图形缓冲区或在PostScript文件中输出显示图形。那两个图形输出设备既不支持窗口,也不支持组件程序。因此,程序要生成一个命令,类似于Window或一个在支持窗口的图形设备中创建窗口的命令。 为达到这个目的,可以使用!D.Flags系统变量。如果在这个变量的第八位的值不为0,那么当前图形设备就支持窗口。用256和这个系统变量进行逻辑AND运算,如果返回值为0,那么当前的图形设备就不支持窗口。 这些代码让用户有机会在支持窗口的图形设备上打开图像文件。从这个意义上说,参数image可以说是一个可供选择的参数。如果设置不支持窗口,参数image就是一个必须的参数了。增加了逻辑判断的代码如下: IF N_Params( ) EQ 0 THEN BEGIN IF (!D.Flags AND 256) NE 0 THEN BEGIN Image = GetImage ( Cancel= canceld, ‘m51.dat’,$ Xsize=340,Ysize=440) IF CANCELD then return ENDIF else begin Message, ‘Please supply an image argument,’,/Continue RETURN ENDELSE ENDIF 注意,GetImage 命令用来打开图像文件。

文档评论(0)

qianqiana + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5132241303000003

1亿VIP精品文档

相关文档