[問題] GUI問題已回收

看板MATLAB作者 (夏夜晚風輕拂)時間16年前 (2009/06/21 03:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
EX1:在文字方塊裡輸入數字後(必須檢查是否在0~255之間),按下Enter來接收時卷軸 就會被設定成文字方塊裡所輸入數字,同時靜態文字方塊裡的顏色也會跟著改變。 %程式碼: close all figure('Position',[80 80 230 160],'Menubar','none'); h_sld=uicontrol('Style','slider','Position',[30 20 100 20],... 'Max',255,'Min',0,'Value',128,'Sliderstep',[1/255,10/255]); h_edit=uicontrol('Style','edit','Position',[150 20 50 20]); h_txt=uicontrol('Style','text','Position',[30 60 170 80],... 'BackgroundColor',[128 128 128]/255); set(h_edit,'Callback','sld_action'); ------------------------------------------------------------------- %sld_action.m val=str2double(get(h_edit,'string')); if val >=0 & val <= 255 set(h_sld,'Value',val)); set(h_txt,'BackgroundColor',[val val val]/255); end 問題:為何文字方塊裡的值無法反映在slider呢? EX2:所繪線條的顏色可依照選擇按鈕裡所指定的顏色來繪圖。 %程式碼: close all figure('Position',[80 80 280 220],'Menubar','none'); axes('Position',[0.15 0.2 0.8 0.7]); % 建立繪圖區 axis([0 1 0 1]); % 設定繪圖範圍 h(1)=uicontrol('String','Red','Position',[40 5 60 20]); h(2)=uicontrol('String','Green','Position',[110 5 60 20]); h(3)=uicontrol('String','Blue','Position',[180 5 60 20]); set(gcf,'WindowButtonDownFcn','draw_lines(''down'')'); set(gcf,'WindowButtonMotionFcn','draw_lines(''motion'')'); set(gcf,'WindowButtonUpFcn','draw_lines(''up'')'); cmd1='set(gca,''Color'',[1,0,0])'; cmd2='set(gca,''Color'',[0,1,0])'; cmd3='set(gca,''Color'',[0,0,1])'; set(h(1),'Callback',cmd1); set(h(2),'Callback',cmd2); set(h(3),'Callback',cmd3); ----------------------------------------------------------------------- function draw_lines(str) global x0 y0 flag; % 定義x0、y0與flag為全域變數 switch str case 'down' current_pt=get(gca,'CurrentPoint'); % 取得滑鼠按下的位置 x0=current_pt(1,1); % 取得滑鼠所在位置的x座標 y0=current_pt(1,2); % 取得滑鼠所在位置的y座標 flag=1; % 設定flag=1,代表滑鼠已被按下 case 'motion' if flag==1 % 如果滑鼠被按下,則執行下列的動作 current_pt=get(gca,'CurrentPoint'); % 取得滑鼠目前的位置 x1=current_pt(1,1); % 取得滑鼠所在位置的x座標 y1=current_pt(1,2); % 取得滑鼠所在位置的y座標 line([x0,x1],[y0,y1]); % 將目前的點與上一個點連接起來 x0=x1; %更新x0的值 y0=y1; %更新y0的值 end case 'up' flag=0; % 設定flag=0,代表滑鼠以被放開 end 問題:上述的按鈕被寫成控制gca的顏色,該怎樣修改才能取得按鈕的值,並且 改變線段顏色呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.106.33
文章代碼(AID): #1AFJYgL- (MATLAB)
文章代碼(AID): #1AFJYgL- (MATLAB)