Figure ウィンドウが他のアプ​リケーションの前面に​出るのはなぜですか?

7 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 15 Nov 2012
Figure ウィンドウを生成する MATLAB ファイルを実行しました。スクリプトが実行されている間、他のアプリケーションを使い始めました。MATLAB にフォーカスを当てていないのに、Figure が他のアプリケーションの前面に出てきます。

Accepted Answer

MathWorks Support Team
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 に適切なハンドルを渡すことで使用を回避することができます。

More Answers (0)

Categories

Find more on グラフィックス in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!