【IDL】编写程序启动界面
2022/6/9 1:23:04
本文主要是介绍【IDL】编写程序启动界面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
很多时候程序启动时需要花一定的时间进行界面初始化、配置文件读取等操作,需要用户等待,此时如果有个带漂亮图片或程序版权信息的界面在那放着会让人感觉程序启动中,马上就起来了。
从IDL实现上讲,无非就是显示一个不带菜单,不带标题栏的widget_base,里面显示了一张图片。
下面以一个常规的界面程序为例,注意代码中的调用部分。
启动界面
程序主界面
代码如下:
;$Id: show_splash_screen.pro 4 2008-01-30 21:13:44Z mpiper $ ;+ ; Shows an image without a window border on the screen. ; ; @returns widget identifier of top-level base ; @param image {in}{type=2 or 3 dimensional array} an image to ; display ; @keyword true {in}{optional}{type=integer, 0-3}{default=0} order of ; bands, 0 if 8-bit image ; @keyword order {in}{optional}{type=boolean} orientation of image ; @keyword title {in}{optional}{type=string} title of window to ; display in icon ;- ;启动界面 function show_splash_screen, image, true=true, order=order compile_opt idl2 on_error, 2 true_local = n_elements(true) eq 0 ? 0 : true sz = size(image, /structure) if (true_local eq 0 and sz.n_dimensions ne 2) then $ message, 'TRUE keyword must be set to 1, 2, 3 ' $ + 'for 24-bit image' if (true_local ne 0 and sz.n_dimensions ne 3) then $ message, 'TRUE keyword must be set to 0 for 8-bit image' xind = (true_local ne 1) ? 0 : 1 yind = ((true_local eq 0) or (true_local eq 3)) ? 1 : 2 ;屏幕分辨率计算 device, get_screen_size=screen_size ;界面偏移量 xoffset = (screen_size[0] - sz.dimensions[xind]) / 2 yoffset = (screen_size[1] - sz.dimensions[yind]) / 2 tlb = widget_base(tlb_frame_attr=4, /column, $ xpad=0, ypad=0, xoffset=xoffset, yoffset=yoffset) draw = widget_draw(tlb, xsize=sz.dimensions[xind], $ ysize=sz.dimensions[yind]) widget_control, tlb, /realize widget_control, draw, get_value=win_id wset, win_id tv, image, true=true_local, order=keyword_set(order) return, tlb end ;启动界面示例代码 ; pro splash_example ;读取启动界面要显示的数据 file = filepath('rose.jpg', SUBDIRECTORY=['examples','data']) data = read_image(file) ;开始启动界面*** splash_base = show_splash_screen(data,/true) ; ;创建程序内容,初始化界面、程序、数据等,注意,程序界面的tlb先是要隐藏的 tlb = WIDGET_BASE($ /column, $ map = 0,$ ;隐藏 mbar =result,$ title ='test_button') ; WIDGET_CONTROL,tlb,/realize menu = WIDGET_BUTTON(result, value ='文件(&F)') fmenu = WIDGET_BUTTON(menu, value ='√打开') ;menu关键字 mMenu = WIDGET_BUTTON(menu, value ='进入',/menu) tMenu = WIDGET_BUTTON(mMenu, value ='二级',/menu) ;separator关键字 eMenu = WIDGET_BUTTON(menu, value ='退出',/SEPARATOR) ubase = WIDGET_BASE(tlb,/row) dbase = WIDGET_BASE(tlb,/row,/frame) ; b = WIDGET_BUTTON(ubase,value = '按钮',tooltip = '创建的button') b = WIDGET_BUTTON(ubase,value = '菜单', $ tooltip = '菜单加对号') h = WIDGET_BUTTON(ubase,value = BINDGEN(2,40)) ; bit =WIDGET_BUTTON(ubase,value =filepath('colorbar.bmp', SUBDIRECTORY=['resource','bitmaps']),/bitmap) ;单选button' exbase = WIDGET_BASE(dbase,/EXCLUSIVE,/column,/frame) eb1 = WIDGET_BUTTON(exbase,value ='对',uName = 'right',/NO_RELEASE ) eb2 = WIDGET_BUTTON(exbase,value ='错',uName = 'error',/NO_RELEASE ) ;选择第一个按钮 widget_control,eb1,/SET_BUTTOn ;复合选择button nexbase = WIDGET_BASE(dbase,/NONEXCLUSIVE,/column) eb1 = WIDGET_BUTTON(nexbase,value ='envi') eb2 = WIDGET_BUTTON(nexbase,value ='idl') ;选择第一个按钮 widget_control,eb1,/SET_BUTTOn ;创建显示组件 wDraw = Widget_Draw(tlb,xsize = 600,ysize = 400) ;等待2秒 wait,2 ;销毁启动界面*** Widget_control, splash_base,/destroy ;计算界面居中 ;屏幕分辨率计算 device, get_screen_size=screen_size geoInfo = widget_info(tlb,/geo) ;界面偏移量 xoffset = (screen_size[0] - geoInfo.xSize) / 2 yoffset = (screen_size[1] - geoInfo.ySize) /2 Widget_Control,tlb, xoffset = xoffset, $ yoffset = yoffset ;显示程序主界面 widget_control,tlb,/map ;后面其他功能代码 ;..... end
知识点总结:
1、界面组件布局
2、菜单、按钮(单选、复选)按钮
3、启动界面
这篇关于【IDL】编写程序启动界面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南