我无法通过鼠标点击使用gca()函数让Scilab正确回应我选择的图形窗口。每次我用鼠标点击不同的窗口我想让它通过打印0或1或2作为figure_id来响应,但是这个程序保持打印figure_id = 2.
我使用双击右键退出循环。
我在W7盒子上使用Scilab 5.4.0。请帮我解决我的错误逻辑。
x=[0:0.1:2*%pi];
clf(0);
p0=scf(0);
p0.figure_position=[0,0];
plot(sin(x));
xname("First Plot)");
clf(1);
p1=scf(1);
p1.figure_position=[30,30];
plot(sin(2*x));
xname('Second Plot');
clf(2);
p2=scf(2);
p2.figure_position=[60,60];
plot(sin(3*x));
xname('Third Plot');
while (1) do //until CTRl-d is hit
[b,xc,yc]=xclick(); //wait til mouse click
a=gcf();
scf(a.figure_id);
mprintf ('You have clicked on graph %d\n',a.figure_id); //display graph number
//code to manipulate selected graph here//
if (b==12) | (b==-1000) then, //double right click to escape
break;
end;
end;
mprintf('DONE\n');
答案 0 :(得分:0)
我认为gcf()文档不是很清楚,它可能与gce()具有相同的行为。来自the docs of gce():
此例程返回最后创建的(并且仍然存在的)实体的句柄。
您可以使用xclick返回的窗口标识(iwin)。
[ibutton,xcoord,yxcoord,iwin,cbmenu]=xclick([flag])
如果我像这样更新您的代码,它可以工作:
while (1) do //until CTRl-d is hit
[b,xc,yc,iwin]=xclick(); //wait til mouse click
scf(iwin);
mprintf ('You have clicked on graph %d\n',iwin); //display graph number
//code to manipulate selected graph here//
if (b==12) | (b==-1000) then, //double right click to escape
break;
end;
end;