How to limit the movement of a rectangle?

1 次查看(过去 30 天)
I use RectangleMovingEvent.
But I want to move the rectangle only vertically.
So I changed the values of PreviousPosition and CurrentPosition, but they are the same.
How do I limit the movement of the rectangle ??
roi = drawrectangle('Position',p ,'Color',[1 0 0]);
addlistener(roi, 'MovingROI', @(a, b)roi_moved(a, b, handles));
function roi_moved(hObject, eventdata, handles)
p = hObject.Position;

采纳的回答

Stijn Haenen
Stijn Haenen 2019-11-14
maybe this will work:
roi = drawrectangle('Position',p ,'Color',[1 0 0]);
t=0;
while t<1
pause(0.15);pos=get(roi,'position');
set(roi,'position',[p(1) pos(2) p(3) p(4)])
t=t+0.01;
end
  1 个评论
BoSeon Kang
BoSeon Kang 2019-11-15
I solved it like this.
hObject.Position(1) = eventdata.PreviousPosition(1);
Thank you for the answer.

请先登录,再进行评论。

更多回答(1 个)

Stijn Haenen
Stijn Haenen 2019-11-14
Maybe you can use the function:
get(roi,'position')
But i'm not sure what you want.

Community Treasure Hunt

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

Start Hunting!

Translated by