MATLAB移动矩形框,[请教]Matlab关于在图像上通过鼠标拖曳画出矩形框的问题

function dynpoint(arg,h)

% Show the coordinates of a plot dynamically

%

% To start use:

% dynpoint(h)

% where h is a handle to a figure, axes or e.g. line.

%

% To delete use:

% dynpoint('delete',h)

% where h is a handle to a figure, axes or e.g. line.

% (you may also use: dynpoint delete)

%

% There can only be one dynamic plotter in a figure at a time.

%

% Example:

% subplot(211), hline = plot(sin(1:10))

% subplot(212), plot(sin(1:100))

% dynpoint(hline)

% 2002,6.29

if ~exist('arg','var')

arg = gcf;

end

if ~isstr(arg)

handle = arg;

arg = 'init';

end

switch arg

case 'init'

if ~ishandle(handle)

error('h is not a handle')

end

[h,ax] = h2hax(handle);

% delete old dynamic text object

ht = findobj(h,'tag',[mfilename '_text']);

if any(ht)

delete(ht)

end

% text window at the bottom left corner

% text in centred

uicontrol(h,...

'style','text',...

'pos',[2 2 200 15],...

'tag',[mfilename '_text'],...

'userdata',ax(1))

% do the dynamic thing...

set(h,'windowbuttonmotionfcn',[mfilename ' move'])

case 'move'

ht = findobj(gcbf,'tag',[mfilename '_text']);

ax = overobj('axes');

if ~any(ax)

ax = get(ht,'userdata');

end

p = get(ax,'currentpoint');

set(ht,'string',sprintf('(%g, %g)', p(1), p(3)));

case 'delete'

if ~exist('h','var')

h = gcf;

end

[h,ax] = h2hax(h);

set(h,'windowbuttonmotionfcn','')

ht = findobj(h,'tag',[mfilename '_text']);

delete(ht)

end

% ----------

function [h,ax]=h2hax(handle)

typ = get(handle,'type');

if strcmp(typ,'figure')

h = handle;

ax = findobj(h,'type','axes');

elseif strcmp(typ, 'axes')

h = get(handle,'parent');

ax = handle;

elseif strcmp( get(get(handle,'parent'), 'type'), 'axes' )

ax = get(handle,'parent');

h = get(ax,'parent');

end

申明不是我写的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值