MATLAB Answers

drawfreehand in App Designer ?

37 views (last 30 days)
I want to add a freehand draw in my app, with :
d = drawfreehand(app.UIAxes_1,'color','green');
But i have this error:
Error using images.roi.internal.ROI/parseInputs
ROI parent must be a valid Axes object.
Error in images.roi.Freehand
So how can i use drawfreehand in App Designer ?
Thanks a lot in advance.


Sign in to comment.

Accepted Answer

Saumya Goel
Saumya Goel on 23 May 2019
At this time, the "drawfreehand" function only takes an 'axes' objects as an argument, not 'UIAxes', the type of axes that are used in App Designer. More information about the valid arguments for 'drawfreehand' can be found on this documentation page:


Stanley Strawbridge
Stanley Strawbridge on 8 Aug 2019
So is there a way to draw a roi on an image in the UIAxes in App designer?
Sean de Wolski
Sean de Wolski on 8 Aug 2019
See my answer below.

Sign in to comment.

More Answers (1)

Sean de Wolski
Sean de Wolski on 8 Aug 2019
It's kind of silently supported but you can programmatically (>=R2018b) add an axes to a uifigure and then draw* will work.
ax = axes('Parent', uifigure)

  1 Comment

Stanley Strawbridge
Stanley Strawbridge on 8 Aug 2019
Hi Sean, thanks for the response! This is moving in the right direction.
The commands provided allow me to open a NEW uifigure, separate from my GUI, that I am able to use drawfreehand with:
ax = axes('Parent',uifigure);
However I would like to use this on the figure I already have in the GUI. I've tried several permutations of:
ax = axes('Parent',app.UIFigure);
But this is not working on either the blank app.UIFigure/UIAxes, or on the image I have plotted with imshow.
Is there a way to get my current app.UIFigure/UIAxes to work?
OR. do I need to go back to the begining and manually add a uifigure to my GUI, do all of the plotting In that window, and then use drawdfreehand (I'm makeing a 3D image viewer that lets you circle things on different slices of a z-stack TIFF). If this is the case, could you point me to how to manually embed the new uifigure such that it has the same properties as the app.UIFigure. (I am interpreting "programatically add an axes", literally code the figure in by hand without the aid of the app designer. Is this what you mean?)

Sign in to comment.

Sign in to answer this question.