Finally, I find some good code, and I changed some parts to customize for me. Thus, the user can draw anythings in the axes with the mouse:
function userDraw(handles) %F=figure; %setptr(F,'eraser'); %a custom cursor just for fun A=handles.axesUserDraw; % axesUserDraw is tag of my axes set(A,'buttondownfcn',@start_pencil) function start_pencil(src,eventdata) coords=get(src,'currentpoint'); %since this is the axes callback, src=gca x=coords(1,1,1); y=coords(1,2,1); r=line(x, y, 'color', [0 .5 1], 'LineWidth', 2, 'hittest', 'off'); %turning hittset off allows you to draw new lines that start on top of an existing line. set(gcf,'windowbuttonmotionfcn',{@continue_pencil,r}) set(gcf,'windowbuttonupfcn',@done_pencil) function continue_pencil(src,eventdata,r) %Note: src is now the figure handle, not the axes, so we need to use gca. coords=get(gca,'currentpoint'); %this updates every time i move the mouse x=coords(1,1,1); y=coords(1,2,1); %get the line existing coordinates and append the new ones. lastx=get(r,'xdata'); lasty=get(r,'ydata'); newx=[lastx x]; newy=[lasty y]; set(r,'xdata',newx,'ydata',newy); function done_pencil(src,evendata) %all this funciton does is turn the motion function off set(gcf,'windowbuttonmotionfcn','') set(gcf,'windowbuttonupfcn','')