Ich möchte ein Programm in Matlab mit GUI haben, bei der Ausführung des Programms kann der Benutzer alle Dinge mit der Maus auf die Achsen in der GUI zeichnen, und ich möchte das erstellte Bild in einer Matrix speichern. Wie kann ich das tun?Zeichnen mit der Maus auf der GUI in Matlab
Antwort
Endlich finde ich einen guten Code und ich habe einige Teile für die Anpassung für mich verändert.
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','')
Die Funktion ruft die Koordinaten von Mausklicks innerhalb einer Figur ab. Sie können diese als Punkte einer Linie, eines Polygons usw. verwenden.
Wenn dies nicht Ihren Anforderungen entspricht, müssen Sie beschreiben, was genau Sie vom Benutzer erwarten.
für Freihandzeichnen könnte dies nützlich sein:
http://www.mathworks.com/matlabcentral/fileexchange/7347-freehanddraw
Ich habe die Entwicklung eines Programms für den Charakter erkennen, dass die Benutzer Zeichnung, so sollte der Benutzer zu zeichnen alphanumerischen Zeichen können: Mit dieser Art und Weise kann der Benutzer anythings in den Achsen mit Maus. –
Siehe meine Bearbeitung oben. –
Der einzige Weg, ich weiß, mit Matlab-Fenster mit einer Maus zu interagieren, ist G Eingang, aber das wird jetzt können Sie alles mit Flüssigkeit ziehen.
Es gibt Möglichkeiten, Java Swing-Komponenten in Matlab-Check http://undocumentedmatlab.com/ für weitere Informationen zu verwenden.
EDIT: Vielleicht möchten Sie dies auch überprüfen.
http://blogs.mathworks.com/videos/2008/05/27/advanced-matlab-capture-mouse-movement/
Wie verwende ich diese Funktion zum Zeichnen? – mikeglaz