1)要调用envi函数(envidoit为主)二次开发;2)要编写有界面操作、可参数传递功 能(widget*);3)最后要加入 Envi菜单中
时间: 2024-04-21 12:28:50 浏览: 165
好的,根据您的要求,您需要使用 C++ 和 Qt 框架来编写一个有界面操作、可参数传递、能够调用 enviro 函数的 Envi 菜单。
以下是基本的实现思路:
1. 创建一个主窗口,添加 Envi 菜单。
2. 在 Envi 菜单中添加一个子菜单,例如 Envi Function,用于调用 enviro 函数。
3. 在 Envi Function 子菜单中添加一个 QAction,例如 Envi Function 1,用于触发调用 enviro 函数。
4. 在 Envi Function 1 的触发信号中,编写代码调用 enviro 函数,并且向该函数传递参数。
5. 如果需要,您可以添加其他的 QAction,用于触发其他的操作。
这只是一个基本的实现思路,具体的实现细节还需要根据您的具体需求进行调整。
希望这可以帮助到您!
相关问题
envi二次开发传参widget图像镶嵌代码idl
您好,如果您需要在 Envi 中通过 IDL 代码实现传递图像镶嵌参数给 Widget,可以按照以下示例代码操作:
```
pro example
; 打开需要传递图像镶嵌参数的 Widget
widget_control, 'OpenWidget', /modal, handler=widget_handler
end
pro widget_handler, event
case event of
'ok': begin
; 获取需要传递的图像镶嵌文件
filename = widget_info(widget_control, /get_value, 'filename')
; 打开镶嵌文件
envi_file = envi_open_file(filename)
; 获取需要传递的波段
bands = [0, 1, 2] ; 假设需要传递前三个波段
; 将镶嵌文件和波段作为参数传递给 Widget
widget_control, 'CallWidget', widget_id, 'widget_function', envi_file, bands
; 关闭 Widget
widget_control, 'CloseWidget', widget_id
end
endcase
end
```
在上述代码中,`widget_handler`是处理 Widget 事件的函数,其中`widget_control`是 Envi 中用于控制 Widget 的函数,`envi_open_file`是用于打开镶嵌文件的函数,`widget_id`是目标 Widget 的 ID,`widget_function`是需要调用的 Widget 函数,`envi_file`是需要传递的镶嵌文件,`bands`是需要传递的波段。
以上代码仅是示例,具体实现要根据您的需要进行调整。希望能够对您有所帮助。如果还有其他问题,请随时问我。
解释以下代码pro envi_rotate_define_buttons , btninfo compile_opt idl2 ENVI_DEFINE_MENU_BUTTON,btnInfo,$ Value = 'rotate',$ UVALUE = ' ',$ Ref_Value = 'Window',$ Position = 'after',$ Event_Pro = 'envi_revolve' end Pro envi_rotate Compile_opt idl2 ENVI,/restore_base_save_files ENVI_BATCH_INIT ENVI_OPEN_FILE, fileIn, R_FID=fid ENVI_FILE_QUERY, fid,dims=dims,ns=ns,nl=nl,nb=nb pos=indgen(nb) base = widget_auto_base(title='setting') sb=widget_base(base, /row, /frame) wp=widget_param(sb, prompt='ROT_TYPE',dt=3,uvalue='ROT_TYPE',/auto) sb=widget_base(base, /row, /frame) wf=widget_outfm(sb, uvalue='outf', PROMPT='Enter output File',/auto) result = auto_wid_mng(base) if (result.accept eq 0) then return ROT_TYPE=(result.ROT_TYPE) outfile=result.outf.name envi_doit,'ROTATE_DOIT',fid=fid,dims=dims,pos=pos,$ r_fid=r_fid,out_name=outfile,$ ROT_TYPE=ROT_TYPE end
这段代码是一段IDL程序,用于实现ENVI软件中的图像旋转功能。其中,pro envi_rotate_define_buttons定义了旋转功能的按钮信息;pro envi_rotate定义了旋转功能的具体实现过程,包括打开文件、获取文件信息、设置旋转类型、设置输出文件等步骤。最后,通过调用envi_doit函数实现图像旋转操作。
具体解释如下:
- ENVI_DEFINE_MENU_BUTTON:表示定义一个菜单按钮,这里定义了一个名为"rotate"的按钮,位置在"Window"按钮之后。
- ENVI_OPEN_FILE:表示打开一个文件,其中fileIn为输入文件名,R_FID为返回的文件ID。
- ENVI_FILE_QUERY:表示获取文件信息,包括维度信息、像素数、波段数等。
- widget_auto_base:表示创建一个自动窗口基础部件,作为图形用户界面的基础部件。
- widget_param:表示创建一个参数部件,用于输入旋转类型。
- widget_outfm:表示创建一个输出文件名部件,用于指定输出文件名。
- auto_wid_mng:表示管理自动窗口中的所有部件。
- envi_doit:表示执行旋转操作,其中fid为输入文件ID,dims为文件维度信息,pos为像素位置信息,r_fid为输出文件ID,out_name为输出文件名,ROT_TYPE为旋转类型。
阅读全文