我试图创建一个GUI,在其中我在一些图像上绘制几个点。 我有一个滚动条来更新正在显示的图像,我需要将这些点继续绘制在我使用滚动条选择的任何图像上。 我创建了一个类,我存储GUI句柄,点坐标和监听器。此外,我创建了几个方法,包括一个用于创建侦听器的方法,另一个用于在用户更新图像时绘制点的方法。 这是我的一段代码:
classdef CircularRoi < handle
properties
x = [];
y = [];
xc = [];
yc = [];
handles = [];
hl = [];
end
properties (SetObservable = true)
slice = [];
end
methods
function obj = CircularRoi(hdl, value)
obj.handles = hdl;
obj.slice = value;
obj.addListener;
end
function addListener(obj)
obj.hl = addlistener(obj.handles.sld_img, ...
'Value', 'PostSet', ...
@(src, event)plotRoi(obj, src, event));
end
function getRoi(obj, hdl, src, event)
obj.getRoiCircle;
obj.slice = get(hdl.sld_img, 'Value');
end
function plotRoi(obj, src, event)
axeshandle = obj.handles.axs_img;
obj.slice = get(obj.handles.sld_img, 'Value');
disp(obj.slice)
txt = findobj(get(axeshandle, 'Children'), 'Type', 'Text');
% img = findobj(get(axeshandle, 'Children'), 'Type', 'Image');
% img = img(1);
delete(txt);
% imshow(get(img, 'CData'), [], 'parent', axeshandle);
plot(axeshandle, obj.x, obj.y, '*b', obj.xc', obj.yc', 'c');
for ii = 1: length(obj.x)
text(obj.x(ii), obj.y(ii), num2str(ii), 'color', 'c', 'Parent', axeshandle);
end
end
我的问题是,当我使用滚动条更新图像时,会调用plotRoi函数并绘制点,但一旦发生这些点,它们就会消失,就好像图像被绘制在它们上面一样。
知道发生了什么事吗?
提前谢谢大家。