Toolbar Guide GUI Editor - Tool Creation - Brush

How can I include a brush tool onto my GUI? This is as far as I get
function uitoggletool_ClickedCallback(hObject, eventdata, handles)
brush(handles.clean_plot)
guidata(hObject, handles)
Many thanks, Will

 採用された回答

Adam
Adam 2015 年 3 月 5 日
編集済み: Adam 2015 年 3 月 5 日

1 投票

function togglebutton1_Callback(hObject, eventdata, handles)
if hObject.Value == 1
brush( handles.figure1, 'on' );
else
brush( handles.figure1, 'off' );
end
seems to work fine for me using a toggle button. Strangely when I tested it at first on a scatter plot using the '*' marker it didn't work, but the same behaviour happened when I just tried on a normal normal figure so I don't know what is going in there. It worked when I used a 's' marker for my scatter plot though in both cases.
handles.figure1 is the tag for the figure itself. I never call mine 'figure1' when i am creating a proper GUI, but this was just a test so that is what it refers to. It must be the figure handle, not an axes handle.

10 件のコメント

William
William 2015 年 3 月 5 日
編集済み: William 2015 年 3 月 5 日
It comes up with an error saying...
Attempt to reference field of non-structure array.
Error in GUI_name>uitoggletool6_clickedcallback (line ...)
if hObject.Value == 1
Adam
Adam 2015 年 3 月 5 日
What is your full callback syntax?
Is this a GUI written using GUIDE or programmatically? My example was done using GUIDE, but the same idea should work programmatically, except that you obviously don't have a 'handles' structure and you don't have hObject either unless that is what you happened to name it in your created callback.
William
William 2015 年 3 月 5 日
編集済み: William 2015 年 3 月 5 日
it's in GUIDE (even tho I said programmatically at the top :L )
function uitoggletool6_ClickedCallback(hObject, eventdata, handles)
if hObject.Value == 1
brush( handles.clean_midline_plot, 'on' );
else
brush( handles.clean_midline_plot, 'off' );
end
If I look at the property inspector of the toolbar icon from the guide menu, it doesn't mention a "Value".
Adam
Adam 2015 年 3 月 5 日
編集済み: Adam 2015 年 3 月 5 日
Which version of Matlab are you using? I guess I should have used the old syntax to be sure:
if ( get( hObject, 'Value' ) == 1 )
should work in all versions of Matlab. The syntax I originally gave only works with R2014b onwards.
William
William 2015 年 3 月 5 日
I'm on R2013a. Now it tells me the brush function finds the figure Unknown or invalid
Adam
Adam 2015 年 3 月 5 日
編集済み: Adam 2015 年 3 月 5 日
Is 'clean_midline_plot' a figure handle? It sounds more like an axes handle or an image or line object handle.
William
William 2015 年 3 月 6 日
編集済み: William 2015 年 3 月 6 日
yes, it's an axes handle. Would it be possible to create a new figure on guide to plot it into?
Adam
Adam 2015 年 3 月 6 日
You can either create a new figure or use the figure containing your current axes handle. So long as you have the handle of whichever figure it is to be applied to it should work.
William
William 2015 年 3 月 6 日
Because I have 2 other axes handles within this figure, so how to I choose a specific axes?
Think I'll just define a new figure and then save the brush data into the workspace shared by the original figure
Adam
Adam 2015 年 3 月 6 日
As far as I know the brush will apply to all axes in a figure. I don't see an option to choose an axes for the brushing specifically. It isn't functionality I have ever used myself though, I'm just looking at the help page.

サインインしてコメントする。

その他の回答 (1 件)

Sung Hwan Heo
Sung Hwan Heo 2016 年 3 月 18 日

0 投票

Do as follows//
function uitoggletool_brush_ClickedCallback(hObject, eventdata, handles)
if strcmp(get(handles.uitoggletool_brush, 'state'), 'on') brush( handles.figure1, 'on' ); else brush( handles.figure1, 'off' ); end guidata(hObject, handles);

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

質問済み:

2015 年 3 月 4 日

回答済み:

2016 年 3 月 18 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by