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函数中有一些东西可以用来防止这种情况,但解决方案让我无法理解。 有什么想法吗?
威尔
答案 0 :(得分:0)
刚刚破解它,如果有人感兴趣,我对imshow()方法做了一个简单的改动,强制它更新那个特定的UI元素。像这样:
axes(currentAxes);
imshow(image, [min max]);
变为:
imshow(image, [min max], 'Parent', axisHandle);
这样,正确的图像面板现在将连续更新以响应滑块的更改。