2012-09-21 13 views

Odpowiedz

8

końcu znaleźć dobrego kodu i niektóre części zostały zmienione dla dostosowania do mnie. z ten sposób użytkownik może rysunek anythings w osiach z myszą:

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's 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','') 
+0

Jak korzystać z tych funkcji do rysowania? – mikeglaz

3

Funkcja ginput otrzymuje współrzędne moueclicks w ramach rysunku. Możesz użyć ich jako punktów linii, wielokąta, itp.

Jeśli to nie odpowiada Twoim potrzebom, musisz opisać, czego dokładnie oczekujesz od użytkownika.

Na rysunku odręcznego to może być pomocne:

http://www.mathworks.com/matlabcentral/fileexchange/7347-freehanddraw

+0

mam opracowanie programu do wykrywania znak, że rysunek użytkownika, więc użytkownik powinien móc rysunek znak alfanumeryczny. –

+0

Zobacz moją edycję powyżej. –

Powiązane problemy