2013-11-28 132 views
1

在MATLAB會話期間,get(0,'screensize')首先給出了正確的分辨率。稍後,答案將變爲[0 0 1 1]。這個行爲只會在我重新啓動matlab時停止,然後再次是正確的值。get(0,'screensize')給出結果[0 0 1 1]而不是實際像素

當我運行我們的程序的特定部分時,總會發生此錯誤。它似乎發生在此特定行代碼之後:

set(0,'PointerLocation',[.4*GUI.scrsz(3),.5*GUI.scrsz(4)],'units','normalized'); 

即使我設法隔離錯誤,我不能找出這種行爲的原因。我在Windows 7 64bit上使用MATLAB R2010b。

請注意,我不是MATLAB的高級用戶,所以請原諒我,如果我忽視了一些顯而易見的事情。提前感謝您的幫助。

回答

5

原因是,您將'units'設置爲'normalized'。而且你的屏幕自然在一個角落開始 - >[0 0 ...並填充整個屏幕 - >... 1 1](第一對定義位置和第二對高度和寬度)所以這些值是正確的,只是不再顯示像素。

之前完成任務後,只需將其設置回set(0,'units','pixels'),這需要標準化單位。或者將您的屏幕大小存儲在變量的開頭,以便稍後使用。

隨着get(0,...)你得到默認屬性,並與set(0,...)你改變他們,這就是爲什麼它是重啓後重新恢復正常,因爲Matlab軟件設置所有值設置爲默認與每一個開始,這是你的情況'units','pixels'

+1

呃,多數民衆贊成,很明顯,多麼尷尬...感謝很多快速和更完整的答案! –

+0

我通過以下方式糾正它: 'GUI.scrsz = get(0,'ScreenSize'); (0,'PointerLocation',[。4 * GUI.scrsz(3),。5 * GUI.scrsz(4)]);' 這樣我就不必亂用不同的單位。再次感謝! –

+0

不用客氣;) – thewaywewalk

相關問題