7

'Position'プロパティをカーソル位置に設定することで、カーソル位置(クリックするとドラッグ)で定義できる位置のオブジェクトをGUIで作成することはできますか?どの関数を使用する必要がありますか?

4

2 に答える 2

4

SELECTMOVERESIZE関数を使用して、GUIオブジェクトの移動とサイズ変更をオンにすることができます。次に、オブジェクトをクリックしてマウスでドラッグします。これと同じくらい簡単です:

set(hObject,'ButtonDownFcn','selectmoveresize');

それほど単純ではないのは、GUIオブジェクトがuicontrolオブジェクトである場合です。この場合、'Enable'プロパティをに設定する'off'か、関数の代わりに関数を実行する'inactive'ために、オブジェクトを無効にする必要があります。これは、オブジェクトのコールバックを定義していない場合でも当てはまります。'ButtonDownFcn''Callback'

また、おそらくGUIにオブジェクトの移動とサイズ変更をオンまたはオフにする手段を追加する必要があります。おそらく、追加のボタンまたは選択可能なメニュー項目です。プッシュボタンを使用してこれを行う方法を示すために、編集可能なテキストボックスと、編集可能なテキストボックスを移動およびサイズ変更する機能をオンまたはオフにするプッシュボタンを備えた図を作成する簡単な例を次に示します。

function GUI_example

  hFigure = figure('Position',[100 100 200 200],...  %# Create a figure
                   'MenuBar','none',...
                   'ToolBar','none');
  hEdit = uicontrol('Style','edit',...               %# Create a multi-line
                    'Parent',hFigure,...             %#   editable text box
                    'Position',[10 30 180 160],...
                    'Max',2,...
                    'String',{'(type here)'});
  hButton = uicontrol('Style','pushbutton',...       %# Create a push button
                      'Parent',hFigure,...
                      'Position',[50 5 100 20],...
                      'String','Turn moving on',...
                      'Callback',@button_callback);

  function button_callback(hSource,eventData)        %# Nested button callback

    if strcmp(get(hSource,'String'),'Turn moving on')
      set(hSource,'String','Turn moving off');          %# Change button text
      set(hEdit,'Enable','inactive',...                 %# Disable the callback
                'ButtonDownFcn','selectmoveresize',...  %# Turn on moving, etc.
                'Selected','on');                       %# Display as selected
    else
      set(hSource,'String','Turn moving on');           %# Change button text
      set(hEdit,'Enable','on',...                       %# Re-enable the callback
                'ButtonDownFcn','',...                  %# Turn off moving, etc.
                'Selected','off');                      %# Display as unselected
    end

  end

end

注:ドキュメントには'Selected'プロパティが読み取り専用として記載されていますが、問題なく変更できました。ドキュメントのタイプミスである必要があります。

于 2011-06-23T16:21:07.067 に答える
2

GUIで非表示の軸を作成し、そこに必要なオブジェクトをプロットできます。次に、ファイル交換からDRAGGABLEを使用して、オブジェクトをあちこちにドラッグできるようにします。

于 2011-06-23T11:17:08.917 に答える