Figure ウィンドウが他のアプリケーションの前面に出るのはなぜですか?
7 views (last 30 days)
Show older comments
Figure ウィンドウを生成する MATLAB ファイルを実行しました。スクリプトが実行されている間、他のアプリケーションを使い始めました。MATLAB にフォーカスを当てていないのに、Figure が他のアプリケーションの前面に出てきます。
Accepted Answer
MathWorks Support Team
on 15 Nov 2012
この動作は、不具合ではなく、ソフトウェアの期待される動作です。ただし、弊社でもこの現象を認識しており、このニーズに対応できるよう、改善に取り組んでおります。
なお、全てのケースには適用できませんが、Figure がフォーカスを得るような原因を作る関数の使用を避けることにより、回避することができます。原因となる関数としては、FIGURE, AXES, GCF, GCA などが該当します。また、これらの関数を呼び出している関数も該当します。
例えば、次のようなコードを取り上げます。
c = 0;
for c = 1:10000
pause(1);
close all;
x = rand(1, 10);
y = rand(1, 10);
line(x, y);
set(gcf, 'Name', num2str(c));
end
このコードを以下のように再構成します。
f = figure;
a = axes;
c = 0;
for c = 1:10000
pause(1);
x = rand(1, 10);
y = rand(1, 10);
cla(a);
line(x, y, 'Parent', a);
set(f, 'Name', num2str(c));
end
ここでは、繰り返しごとに Figure を作成するのではなく、古い軸を CLA 関数でクリアしてその Figure に新しい軸を置きます。さらに、 GCA と GCF については、CLA、LINE、SET に適切なハンドルを渡すことで使用を回避することができます。
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!