Я хочу нарисовать набор несвязанных линий поверх изображения, перетаскивая мышь при нажатой левой кнопке. Однако, если я нажму на ранее нарисованную линию, чтобы указать начальную точку следующей строки, функция обратного вызова не будет вызвана, и я не улавливаю суть. Вот мой код:
function main_test
S.fH = figure('menubar','none');
im = imread( 'image.jpg' );
S.aH = axes;
S.iH = imshow( im ); hold on
axis image;
X = [];
Y = [];
set(S.aH,'ButtonDownFcn',@startDragFcn)
set(S.iH,'ButtonDownFcn',@startDragFcn)
set(S.fH, 'WindowButtonUpFcn', @stopDragFcn);
function startDragFcn(varargin)
set( S.fH, 'WindowButtonMotionFcn', @draggingFcn );
pt = get(S.aH, 'CurrentPoint');
x = pt(1,1);
y = pt(1,2);
X = x;
Y = y;
end
function draggingFcn(varargin)
pt = get(S.aH, 'CurrentPoint');
x = pt(1,1);
y = pt(1,2);
X = [X x];
Y = [Y y];
plot(X, Y, 'r', 'LineWidth', 6);
hold on
drawnow
end
function stopDragFcn(varargin)
set(S.fH, 'WindowButtonMotionFcn', ''); %eliminate fcn on release
end
end
Не могли бы вы помочь мне определить проблему в этом.
Заранее спасибо..
привет, Савсан