3

uicontrol を使用して GUI 要素を作成しています。以下は私のコードです

uicontrol('Style','pushbutton', 'String','Load data','Parent',hTabs(1),'Position',[250 825 80 20], 'Callback',@ButtonCallback);

ここでの問題は、Units normalized オプションを使用しているときに、GUI 要素が画面から消えていることです。GUIがさまざまな画面解像度で自動的に調整されるように、正規化を使用したいと思います。これに関するアイデアは、私にとって非常に役立ちます。

4

2 に答える 2

2

単位を使用する場合はNormalized、0 と 1 の間の位置を定義する必要があります。0 は下部/左側、1 は含まれているオブジェクトの高さ/幅の合計です。

現在、この範囲外の数値を使用して位置を定義しています。できることは 2 つあります。

  • normalized個別の関数呼び出しで単位を切り替えます (以下に示します)。
  • 正規化された単位で を作成しuicontrolますが、適切な位置ベクトルを計算する必要があります

どちらかを行う方法の例を次に示します

簡単な解決策は、 を作成してuicontrolから、別の呼び出しで単位を正規化するように設定することです

u = uicontrol(...) %don't specify the units
set(u,'Units', 'Normalized'); % this solves your problem

正規化された単位で位置ベクトルを取得する場合

normPos = get(u, 'Position') % get the position in normal space

次に、これらの数値を使用してuicontrol、正規化された単位でを作成します。

u = uicontrol(...,'Units','Normalized', 'Position', normPos); 
于 2012-07-17T14:37:00.893 に答える
1

このオプションを使用する 'units','normalized'場合、位置ベクトルを変更する必要があります。図形参照系の座標は 0 ~ 1 です。

例えば

uicontrol('Style','pushbutton',...
          'String','Load data',...
          'Parent',hTabs(1),...
          'units','normalized',...
          'Position',[0 0 0.1 0.1],...
          'Callback',@ButtonCallback); 

親パネルの左下隅に、高さと幅の 10% のボタンが表示されます。

于 2012-07-17T14:36:47.680 に答える