4
我正在編寫一個用MATLAB編寫的圖形用戶界面,並且在OpeningFcn中有一行設置調整圖形大小的回調函數。MATLAB ResizeFcn回調失敗
set(hObject, 'UserData', handles.ParentFig, 'ResizeFcn',@cbFigResize, 'CloseRequestFcn', @Cancel);
爲簡單起見,下面粘貼了大量編輯的回調。
function cbFigResize(src,evt)
% check if figure width is less than 600
if fpos(3) < 600
%set min. width to 600
fpos(3) = 600
end
%check if figure height is less than 560
if fpos(4) <560
% set minimum height to 560
fpos(4) = 560;
end
我的同事運行Windows XP和早期版本的MATLAB。我運行Windows 7和MATLAB 7.12.0.635。現在,當他調整數字時,他們總是適當調整大小。當我運行相同的代碼時,我有時可能會得到小於上述設置的最小寬度和高度限制的數字。我的同事說這是Windows 7中斷問題。如果其他人有這個問題,我們發現一個簡單但不合邏輯的解決方法,我將在下面發佈。
function cbFigResize(src,evt,doStop)
if nargin < 3
doStop = false;
end
% check if figure width is less than 600
if fpos(3) < 600
%set min. width to 600
fpos(3) = 600
end
%check if figure height is less than 560
if fpos(4) <560
% set minimum height to 560
fpos(4) = 560;
end
if ~doStop
cbFigResize(src,evt,true)
end
你可以看到這個函數自己調用一個標誌,該標誌在成爲一個無限循環時停止。現在我無法將窗口大小調整到最小值以下。有沒有人對此行爲有所瞭解?
您可以擴展帖子以顯示在計算fpos後實際設置圖形屬性的代碼嗎? –
fpos設置在指南中的無花果屬性中。除了代碼中的上述內容外,fpos沒有變化。我沒有包含的代碼只是基於fpos的高度和寬度設置按鈕位置的迷宮。但除了上述之外,沒有改變fpos。用戶可以調整設置fpos的窗口大小,但這是MATLAB中的某處,而不是我的代碼。 –