14IDL入门教程十一.docVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
14IDL入门教程十一

第十一章 组件编程技巧 本章概述 这一章将介绍一些重要的、经常使用的组件编程技巧。和前一章介绍的技巧一起使用,应该可以编写出功能强大的组件程序。在本章中,将学习以下内容: 如何扩充组件程序的功能; 如何保护具有公共块的组件程序; 在组件程序中如何使用指针; 组件程序之间或者是组件程序模块之间的通信新方法; 如何编写适合在8位和24位的显示器上运行的程序; 如何保护程序的颜色; 如何将图形输出为适合广域网传输的文件和PostScript文件; 事实上,一个不能容易扩充或添加的组件程序是一个差劲的程序。任何一个组件程序,首先必须保证能被简单扩充。实现扩充最简单的方法是让组件程序能够调用其他组件,或被其他组件调用。在很大程度上,这意味着用模块化或面向对象的方式来编写程序,可以提高程序的聚合度。 回想一下上一章中所写的XimageBar程序,作为示例,它的功能非常有限。实际上,它仅仅实现了适于某一种特殊显示设备的、可改变大小的图形窗口,对其稍加扩充便是一个很棒的程序。本章将引导读者对其进行扩充(如果需要一个起点,可以利用与本书配套使用的文档中找到xImageB)。 改变颜色表 IDL中,改变颜色表常用的工具是组件程序XloadCT,这是一个很不错的颜色表加载程序,并可以在IDL命令行中调用。而它的局限性在于它是个组件程序在组件,其主要不足是它将颜色向量存储在公共块中。这意味着,在任何时刻只能有一个XloadCT组件可以使用。例如,输入如下三行命令: IDLXloadCT IDLXLoadCT IDLXloadCT 无论输入多少次,仅有一个XloadCT出现在屏幕上。这便是它与其他组件的不同之处,如XimageBar。试着输入以下命令: IDLimg1=LoadData(7) IDLimg2=LoadData(11) IDLXimageBar, img1 IDLXimageBar, img2 这时可以看到两个XimageBar程序同时出现在屏幕上。(当他们显示时,必须将其移开,因为程序每次调用时都出现在同一位置)其实,可以获得任意多个的组件程序。这两个程序间有那些区别呢? 保护公共块 区别在于,XloadCT采用在任意时刻确保只有一个程序运行的方法来保护公共块。这是任何一个使用公共块的组件程序所必须的要求的,同时也是防止其它组件使用该公共块的最好方法。它的缺点就是使组件程序的适用性降低。 XloadCT在它的组件定义模块中使用了Xregistered命令来实现保护公共块的目的。Xregistered命令将程序的名字作为参数,如果那个名字的程序已经注册到Xmanager,Xregistered命令返回1,否则返回0。 如果检查一下XloadCT的源代码(它在IDL安装目录的lib子目录下),可以在组件定义模块的顶部附近,发现这样一行,任何组件被创建之前: IF Xregistered(‘xloadct’)NE 0 THEN RETURN 换句话说,如果名为‘xloadct’的程序已经注册,XloadCT 程序将不创建任何组件而直接返回。程序名就是与Xmanager一起调用时的注册名,它是区分大小写的。(这便是为什么当在用Xmanager 来注册程序时全用大写或全用小写来拼写程序名是个好主意的原因。) 一个可选择颜色表的工具 在屏幕上能够显示一个程序的多个实例,是一大优势。例如,XimageBar是一个颜色敏感的应用程序,它可以很好地在屏幕上显示两个不同的实例,不同程序实例使用不同颜色表。 IDLLoadCT, 4,Ncolors=75 IDLXImageBar,img1, Ncolors=75 IDLLoadCT,3,Ncolors=75,Bottom=75 IDLXimageBar,img2,Ncolors=75,Bottom=75 如果要在这些窗口中改变颜色将会怎样?可以用XloadCT 改变一个或另一个窗口的颜色,而不是同时改变这两个窗口的颜色。 IDL LoadCT, Ncolors=75 或者 IDL XloadCT, Ncolors=75, Bottom=75 实际上,如果这里的每个图形窗口能够只是改变自己的颜色,并且是通过自己的颜色表工具来实现,那将会更好。其实就有这样一个名叫Xcolors的工具,在与本书配套使用的文档中可以找到它。 Xcolors用它的标题来作为它的注册名字(详细信息请参阅Xcolors的源代码).这样,只要每个程序实例有不同的标题,就可拥有多个Xcolors实例了。按如下方法试一下: IDL Xcolors, Ncolors=75, Title=’Window 1 Co

文档评论(0)

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

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

版权声明书
用户编号:5132241303000003

1亿VIP精品文档

相关文档