1

Hellooo 研究员 Matlabbers

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

图像本身是一个轴图,在过去的几个月里,我一直在使用滑块回调来让图像更新为新的对比度值,但是你知道图像只有在你放手后才会更新鼠标。现在我希望图像在我移动滑块时不断更新。我已经使用这样的事件侦听器完成了此操作:

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

在 maxSliderChanged 中,我所做的只是将当前轴设置为我的 GUI 中的轴,并使用新值更新图像,并调用

 imshow(image, [min max]);

其中 min 和 max 由我的滑块定义。现在,当我使用滑块而不是更新我的轴时,问题就出现了,我已经通过调用

axes(currentAxes)

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

将要

4

1 回答 1

0

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

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

变成:

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

这样,正确的图像面板现在将随着滑块的更改而不断更新。

于 2014-05-08T14:34:25.557 回答