Image Matlab中的事件侦听器创建新图形而不是更新旧图形

Image Matlab中的事件侦听器创建新图形而不是更新旧图形,image,matlab,callback,listener,sliders,Image,Matlab,Callback,Listener,Sliders,大家好 我组装的GUI有点问题,基本上我有一个滑块,我用它来改变我正在观看的图像的对比度 图像本身是一个轴图形,在过去的几个月里,我一直在使用滑块回调来获取图像,以使用其新的对比度值进行更新,但正如您所知,图像仅在松开鼠标后更新。现在,我希望图像在移动滑块时不断更新。我使用事件侦听器完成了以下操作: addlistener(handles.dispmaxslider,'ContinuousValueChange',@(hobject, event) maxSliderChanged(hObjec

大家好

我组装的GUI有点问题,基本上我有一个滑块,我用它来改变我正在观看的图像的对比度

图像本身是一个轴图形,在过去的几个月里,我一直在使用滑块回调来获取图像,以使用其新的对比度值进行更新,但正如您所知,图像仅在松开鼠标后更新。现在,我希望图像在移动滑块时不断更新。我使用事件侦听器完成了以下操作:

addlistener(handles.dispmaxslider,'ContinuousValueChange',@(hobject, event) maxSliderChanged(hObject, event, handles));
在maxSliderChanged中,我所做的就是将当前轴设置为GUI中的轴,并通过调用

 imshow(image, [min max]);
axes(currentAxes)
其中,最小值和最大值由我的滑块定义。现在,当我使用滑块而不是更新我的轴时,问题就出现了,我通过调用

 imshow(image, [min max]);
axes(currentAxes)
这样可以确保每次更新后,更新的图像都显示在正确的位置。但是现在,当我移动滑块时,会创建一个新的图形,并且该图像在每次校准后都会更新,就好像我从未调用axes()方法一样。 我怀疑我的addListener函数中有什么东西可以用来防止这种情况发生,但解决方案却没有找到。 有什么想法吗


Will

刚刚破解了它,如果有人感兴趣,我对imshow()方法做了一个简单的更改,强制它更新特定的UI元素。像这样:

axes(currentAxes);
imshow(image, [min max]);
变成:

imshow(image, [min max], 'Parent', axisHandle);
这样,正确的图像面板将根据滑块的变化不断更新