Drawing with mouse on the GUI in matlab

こ雲淡風輕ζ 提交于 2019-12-12 08:04:51

问题


I want to have a program in matlab with GUI, at run the program, user can draw anythings with mouse on the axes in GUI, and i want to saving created image in a matrix. how can i to do this?


回答1:


Finally i find a good code and i have changed some parts for customizing for me. with this way, user can drawing anythings in the axes with 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'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','')



回答2:


The ginput function gets the coordinates of moueclicks within a figure. You could use these as points of a line, polygon, etc.

If this doesn't fit your needs you need to decribe what exactly you expect the user to draw.

For freehand drawing this might be helpful:

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




回答3:


The only way I know to interact with matlab windows using a mouse is ginput, but this will now let you draw anything with fluidity.

There are ways to use Java Swing components in matlab check http://undocumentedmatlab.com/ for more info.

EDIT: You may want to check this out as well.

http://blogs.mathworks.com/videos/2008/05/27/advanced-matlab-capture-mouse-movement/



来源:https://stackoverflow.com/questions/12536376/drawing-with-mouse-on-the-gui-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!