Рисуване на линии чрез плъзгане на мишката в matlab

Искам да нарисувам набор от несвързани линии върху изображение, като плъзгам мишката, докато натискам левия бутон. Ако обаче щракна върху предварително начертана линия, за да укажа началната точка на следващия ред, функцията за обратно извикване не се извиква и не разбирам смисъла. Ето моят код:

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

Бихте ли ми помогнали да идентифицирам проблема в това.

Благодаря Ви предварително..

наздраве, Sawsan


person Sawsan    schedule 06.11.2012    source източник


Отговори (1)


Трябва да зададете свойството ButtonDownFcn и на изчертаната линия, т.е.

plot(X,Y,'r','LineWidth',6,'ButtonDownFcn',@startDragFcn)
person Jonas    schedule 06.11.2012