idl入门教程_09_编写idl程序.pdfVIP

  • 56
  • 0
  • 约1.77万字
  • 约 11页
  • 2018-02-02 发布于浙江
  • 举报
idl入门教程_09_编写idl程序

第九章 编写 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

文档评论(0)

1亿VIP精品文档

相关文档