%===========================================================================
try
Screens=Screen('Screens');
ScreenNum=max(Screens);
[w, wRect]=Screen('OpenWindow', ScreenNum);
% 打开一个新的屏幕
% w指代当前的屏幕
% wRect,当前屏幕的大小矩阵,我的电脑分辨率是1280×800, wRect就是[ 0 0 1280 800]
black=BlackIndex(w);
white=WhiteIndex(w);
gray=(white+black)/2;
%当前屏幕的最大、最小灰度值,一般white=255, black=0; 两者均值设为gray
Screen('FillRect',w,gray); %把屏幕w涂成gray颜色
Screen('Flip',w); %需要flip上面对屏幕的操作才会显现出来
HideCursor; %隐藏鼠标的光标,以免实验过程中受到打扰
Text='Press any key to start...'; %需要呈现的文字
oldTextSize=Screen('TextSize',w,35); %调整文字的大小为35号
Screen('DrawText', w, Text, 420, 340,[0,0,255]); %呈现文字在屏幕上的函数
Screen('Flip',w); %同上面。需要flip对屏幕的操作才会显现出来
KbWait;
%按任意键继续
Waitsecs(2); %屏幕两秒
Screen('CloseAll'); %结束,关闭屏幕
ShowCursor %显示光标(前面把光标隐藏了),否则程序结束后屏幕上也没有光标
catch
ShowCursor
Screen('CloseAll');
Priority(0);
psychrethrow(psychlasterror);
end
%=========================================================================
首先,运行以上函数:
按F5运行程序。会看到新开出一个屏幕,随后出现如下文字和注视点,按任意键,之后屏幕逐渐
由黑变白,直到屏幕关闭。
try----catch----end结构:
推荐编程序都用这样的框架,catch后面都不用改、可以直接用。
这个结构的好处是,当try下面的语句出现问题的时候,会自动执行catch后面的语句,
跳出程序,不会出现程序卡死等问题。
打开一个新的屏幕:
语句就是下面三行:
Screens=Screen(‘Screens’);
ScreenNum=max(Screens);
[w, wRect]=Screen(‘OpenWindow’, ScreenNum);
其实可以直接记下来,每次程序开始的时候,要开屏幕就直接这么用。
[w, wRect]记录了两个后面会用到的变量,w指代当前新开的屏幕,比如要在这个屏幕上呈现文字,
就要用w指代“这个屏幕”;wRect是当前屏幕的大小,我的电脑分辨率是1280×800, wRect就是[ 0 0 1280 800]
打开的屏幕就是一个画布:
打开新的屏幕,就像是新开了一个画布,在上面随便涂涂画画:文字、线段、面孔图片等刺激材料,
控制好呈现时间,实验程序就ok了。
在画布上写文字(DrawText函数):
%=======================
Text='Press any key to start...' %需要呈现的文字
oldTextSize=Screen('TextSize',w,35); %调整文字的大小为35号
Screen('DrawText', w, Text, 420, 340,[0,0,255]); %呈现文字在屏幕上的函数
%========================
DrawText函数用于在屏幕上写字,"w"是上面用于指代屏幕的变量,"Text"是你需要呈现的文字的变量,需要提前设定,比如我写的是:Text=‘Press any key to start…’;420,340两个数字是文字呈现位置的坐标,matlab的设定为屏幕左上角为原点(0,0),横坐标向右为正、纵坐标向下为正;[0,0,255]是文字的颜色,RGB。
第二行TextSize用于设置文字的大小。其他的还可以设置字体之类的,先不管了。。。
画布上画好后,需要Flip才会呈现到屏幕上:
%================
Screen('Flip',w); % 要flip,操作才会显现出来
%================
无论在这张画布上画了什么,都需要刷新一下,写一个上面的函数,这些画上去的东西才会出现在屏幕上。
所以,你就可以悠闲地画上很多东西,写文字、画线段、画圆、放一张面孔图片等…然后用一个Flip函数
这些所有的都会同时呈现出来。
最后,千万记得关闭屏幕!!
%================
Screen('CloseAll'); %结束,关闭屏幕
%================
PS:
利用帮助文档:比如你看程序中的WaitSecs函数,不太懂。所以在命令窗口输入“help WaitSecs”
就会出现具体的用法。输入“doc WaiSecs”也可以。