看着视频学习了一下午,终于把这个程序编写成功了,再此记录一下原代码,以后忘记时好查看。
功能:可以自主选择文件,打开尺寸较小的图片,然后显示在该界面上。
具体界面如下
代码如下:
pro test_DISPLAYimage_event,ev
widget_control,ev.top,get_uvalue=pstate
uname=widget_info(ev.id,/uname)
case uname of
'open':begin
file=dialog_pickfile(title='选择文件',$
filter=['*.bmp','*.jpg','*.tif'],$
path=(*pstate).curpath,$
get_path=curpath)
if curpath ne '' then (*pstate).curpath=curpath
if ~file_test(file) then return
data=read_image(file)
winid=(*pstate).winid
wset,winid
erase,255
tv,data,/true
;显示文件路径
widget_control,(*pstate).ttxt,set_value=file
end
else:
endcase
end
pro test_DISPLAYimage
;主界面
tlb=widget_base(mbar=mbar,title='fxs',/column)
;菜单栏
wFile=widget_button(mbar,value='File')
wOpen=widget_button(wFile,value='oPen')
wExit=widget_button(wFile,value='exit')
;工具栏
tbbase=widget_base(tlb,/frame,/row)
topen=widget_button(tbbase,value='open.bmp',$
/bitmap,uname='open')
ttxt=widget_text(tbbase,value='',xsize=50)
;绘图区域
wdraw=widget_draw(tlb,xsize=1000,ysize=500)
widget_control,tlb,/realize
;设置窗口到屏幕中间
device,get_screen_size=ss ;获取显示器大小
info=widget_info(tlb,/geometry) ;获取窗口大小
tlb_xy=[info.scr_xsize,info.scr_ysize]
offset=[ss-tlb_xy]/2
widget_control,tlb,xoffset=offset[0],$
yoffset=offset[1]
;
widget_control,wdraw,get_value=winid
wset,winid
device,decomposed=0
loadct,0
erase,255
pstate={WINID:winid,$
ttxt:ttxt, $
curpath:''}
widget_control,tlb,set_uvalue=ptr_new(pstate)
;事件管理
XMANAGER,'test_DISPLAYimage',tlb,/no_block
end