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

时间:2014-05-08 12:57:21

标签: image matlab callback listener sliders

Hellooo Fellow Matlabbers

我在使用GUI时遇到了一些麻烦,基本上我有一个滑块,我用它来改变我正在观看的图像的对比度。

图像本身是一个轴图,在过去的几个月里,我一直在使用滑块Callback来获取图像,使用新的对比度值进行更新,但是如您所知,图像只会更新一次放开鼠标。现在我希望在移动滑块时图像不断更新。我用这样的事件监听器完成了这个:

addlistener(handles.dispmaxslider,'ContinuousValueChange',@(hobject, event) maxSliderChanged(hObject, event, handles));

在maxSliderChanged中,我所做的就是将当前轴设置为GUI中的轴,并通过调用

更新新值。
 imshow(image, [min max]);

我的滑块定义了最小值和最大值。现在当我使用滑块而不是更新我的轴时会出现麻烦,我已经通过调用

安全地保护了这些轴。
axes(currentAxes)

这可确保每次更新后,更新的图像都会显示在正确的位置。但是现在当我移动滑块时会创建一个新的图形,并且该图像现在在每次校准后都会更新,就好像我从未调用过axis()方法一样。 我怀疑我的addListener函数中有一些东西可以用来防止这种情况,但解决方案让我无法理解。 有什么想法吗?

威尔

1 个答案:

答案 0 :(得分:0)

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

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

变为:

imshow(image, [min max], 'Parent', axisHandle);

这样,正确的图像面板现在将连续更新以响应滑块的更改。