# 図の複数のボックスを移動しますか？ -- matlab フィールド と drag-and-drop フィールド と figure フィールド 関連 問題

## Moving multiple boxes in figure?

1

### 問題

MATLABの図の単一ボックスをドラッグアンドドロップするために必要な機能をすでに持っています。私が書いたコードは数字をいくつかのボックスでいっぱいにします。別のループを使用すると、数字を超えるボックス（文字列形式で異なる情報を保持します）を入力します。

<事前> <コード> function recallfcn(hObject,eventdata) for ydx=1:2 diag_detail=get(gco,'UserData'); % This line should be in the drag fcn diag_pos=get(gco,'Position'); % So should this one (for current objects) xvar=diag_pos(1,1); yvar=diag_pos(1,2); detail=[diag_detail ydx]; set(findobj('UserData',detail),'Position',[xvar+(ydx-1.5) yvar+0.5 0.8 0.8]); end end % ydx is only there to add another level of detail as I'm actually looking to move % two boxes of the 'first kind', each of which have 2 numbers in user data, the first % number being the same, and the second number distinguishing the first box from the % second. The premise is the same.

I already have the functions required to drag and drop a single box in a figure in MATLAB. The code I wrote fills the figure with several boxes. With another loop I filled the figure with more boxes (which hold different information in string form).

These two sets of boxes are related by the numbers I placed in their UserData (corresponding numbers; for each box, there's another with the same UserData content). By finding boxes containing the same UserData (and thus relating them) I want to be able to relocate a member of the first set of boxes to the same position relative to the corresponding member of the second set of boxes, by means of right clicking on the box I just dragged (uicontextmenu).

``function recallfcn(hObject,eventdata) for ydx=1:2     diag_detail=get(gco,'UserData');   % This line should be in the drag fcn     diag_pos=get(gco,'Position');      % So should this one (for current objects)     xvar=diag_pos(1,1);     yvar=diag_pos(1,2);     detail=[diag_detail ydx];      set(findobj('UserData',detail),'Position',[xvar+(ydx-1.5) yvar+0.5 0.8 0.8]); end end  % ydx is only there to add another level of detail as I'm actually looking to move      % two boxes of the 'first kind', each of which have 2 numbers in user data, the first   % number being the same, and the second number distinguishing the first box from the  % second. The premise is the same. ``
</div

## 回答リスト

3

ベストアンサー

これは例です：

<事前> <コード> doctrine_migrations: migrations_paths: 'DoctrineMigrations': 'src/MigrationsTenant' connection: tenant 2

I usually use `findall` instead of `findobj`, in case the handles of the objects are not visible from the outside. Other than that I don't see why your code wouldn't work.

Here's an example:

``%# make a figure with two buttons, same userData fh=figure, uicontrol('userdata',[2 3],'parent',fh) uicontrol('userData',[2 3],'units','normalized','position',[0.5 0.5,0.1 0.1],'parent',fh)  %# change color to red set(findall(fh,'userData',[2 3]),'backgroundcolor','r')  %# move to the same position set(findall(fh,'userData',[2 3]),'position',[0.3,0.3,0.1,0.1]) ``
</div

3

、 <コード> 'HandleVisibility' プロパティオブジェクトのオブジェクトが決定されますその親の子リストに表示されるので、 findobj 。標準の修正は、関​​数 findall を使用することです。しかし、 <コード> 'HandleVisibility' プロパティ< / a>もオブジェクトが現在のものであるかどうかを判断する際にはプレイが登場しますObject （すなわち、関数GCOによって返される）。 ` 'off' `に設定されている場合、そのオブジェクトは現在のオブジェクトになることはできません。さらに、 <コード> 'HandleVisibility' オブジェクトの親図` 'off' `に設定されています（そのようなオブジェクトを含む）、現在のオブジェクトになることができません。

` 'HandleVisibility' `がすべてのオブジェクトや数字の` 'on' `または<コード>に設定されている場合は、すべてがうまく機能するはずです。

As Jonas alludes to, the `'HandleVisibility'` property of an object will determine if the object shows up in its parent's list of children, and thus if it will be returned by functions like FINDOBJ. The standard fix is to use the function FINDALL instead.

However, the `'HandleVisibility'` property also comes into play in determining whether or not an object can become the current object (i.e. returnable by the function GCO). If it is set to `'off'`, then that object can't become the current object. Additionally, if the `'HandleVisibility'` property of the parent figure of an object is set to `'off'` then none of its children (including said object) can become the current object.

If `'HandleVisibility'` is set to `'on'` or `'callback'` for all your objects and figures, then I think everything should work fine.

</div

0

xとyベクトルのオルソルを逆にする必要があります.1つのループを使用することができます。コード内の変更は次のとおりです。

<事前> <コード> x2=x(end:-1:1); % invers the ordre y2=y(end:-1:1); for i=1:length(x) set(hLine,'xdata',x(i),'ydata',y(i)); % move the point using set % to change the cooridinates. set(hLine2,'xdata',x2(i),'ydata',y2(i)); M(i)=getframe(gcf); end

you should inverse the ordre of x and y vector, and you can use just one loop, the changment in your code is :

``x2=x(end:-1:1); % invers the ordre y2=y(end:-1:1);  for i=1:length(x)  set(hLine,'xdata',x(i),'ydata',y(i)); % move the point using set                                   % to change the cooridinates.  set(hLine2,'xdata',x2(i),'ydata',y2(i));   M(i)=getframe(gcf);  end ``
</div

## 関連する質問

0  測地線で2枚の双曲層を描く方法  ( How to draw two sheeted hyperboloid with geodesics )
MATLABまたはPythonのいずれかを使用して、下の画像（透かしなし）を再作成したいと思います。 このリンクはとても親切でした双曲線を描くためには、そこに表示されているものを超えて何もしていません。緑色の測地線を維持する必要があります。これは簡単に行う...

0  Figureインスタンス内のすべてのMATPLOTLIB軸を取得する：figure.get_axes（）またはfigure.axesを使用する必要がありますか？  ( Retrieving all matplotlib axes in a figure instance should i use figure get axe )

29  MATPLOTLIBプロットを90度まで回転させる方法  ( How can i rotate a matplotlib plot through 90 degrees )

1  Python /プロット治療法で地理的地図を拡大する方法  ( How to enlarge geographic map in python plotly choropleth plot )

6  MATLAB：MATLABに表示されている図としてPDFに図を印刷する  ( Matlab print a figure to pdf as the figure shown in the matlab )

1  幾何学的図形の境界線をリンクする  ( Linking borders of geometric figures )
ペトリネットをシミュレートするAndroidアプリを作成しています。私は丸での場所を表現し、広場での移行を表しています。私はARCによってそれらの見解をつながっています（それは私の目的のためだけのペトリネットからの名前です）そしてここに私が直面している問題です...

0  なぜ私のオープンGL ESフィギュアが表示されていないのですか？  ( Why my open gl es figure is not showing )
まず、私は私の愚かな英語能力をお詫び申し上げます。 GoogleのAndroid開発者の例でOpenGL ESを学びました。 コードをテストし、正しく機能します。 しかし、私は自分のライブラリを作りたいので、コードを変更して分散させました。 （シェーダ.ja...

6  Matplotlib：図形全体をカバーするためのストレッチ画像  ( Matplotlib stretch image to cover the whole figure )

202  MatpLotLib（Pyplot）SeveFigは空白の画像を出力します  ( Matplotlib pyplot savefig outputs blank image )

2  MATLAB：Yラベルは小型の窓に表示されません  ( Matlab y label isnt shown in small figure window )