Can I use ButtonDownFcn on a figure axes not associated with a gui?

Using 2014b, I have a script that creates a figure with three axes, and plots some lines and a legend on each.
When the user clicks or zooms on one of the axes, I want it to call a certain function. I am attempting to use ButtonDownFcn for this, but the function is not being called.
I set all axes children to have HitTest off, and verified this is the case.
The code I use when creating the figure is:
set(fig_handle.CurrentAxes,'ButtonDownFcn', @set_ticks)
What am I doing wrong?

 采纳的回答

Zoom and Pan mode replace the ButtonDownFcn with their own. For a broad range of versions before R2014b a work-around was known involving turning off a setting that was preventing the callbacks from being changed back. With Handle Graphics 2 in R2014b the way that Zoom and Pan work changed, and I have not yet heard any method to achieve this purpose (there might be one, I just might not have encountered it.)

1 个评论

Thanks! I did some searching and trial and error and found this:
hpan = pan(fig_handle);
hpan.ActionPostCallback = @set_ticks;
hzoom = zoom(fig_handle.CurrentAxes);
hzoom.ActionPostCallback = @set_ticks
This works perfectly (I have the function insert text for the XTickLabels at the current auto-generated tickmarks, and reset them to the current XTicks if the axes is zoomed or panned)

请先登录,再进行评论。

更多回答(1 个)

So apparently my code IS working, but doesn't work when I have the Zoom or Pan buttons enabled. Is there a way to make ButtonDownFcn work from botton presses that originate from Zoom or Pan?

类别

在 帮助中心 和 File Exchange 中查找有关 Data Exploration 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by