У меня есть фигура с ползунком, а затем я хочу иметь внешнюю фигуру, которая отображается на изображении.Я хочу иметь возможность использовать ползунок, чтобы изменить патчи прозрачности, которые я рисую на изображении.
В настоящее время это работает, но при каждом перемещении ползунка создается новое изображение.Я бы хотел, чтобы патч обновлялся на текущем изображении вместо открытия нового окна.
Мне было трудно понять это.Я думаю, что мне нужно определить рисунок изображения и маркеры за пределами обратного вызова ползунка, но я не могу понять это.У меня есть некоторые из моего кода ниже.
Я обновил свой код, чтобы включить ваши предложения.Однако я получаю эту ошибку
??? Error using ==> set
Invalid property found.
Object Name : root
Property Name : 'FaceAlpha'.
Error in ==> readraw4>slider_callback at 539
set(hpatch, 'FaceAlpha',alpha)
Я не уверен, как это исправить или что идет не так.Все остальное, похоже, работает.
hFig = figure('menubar','none');
hAx = axes('Parent',hFig);
hSlider = uicontrol('Parent',hFig, 'Style','slider', ...
'Value',0.5, 'Min',0, 'Max',1, 'SliderStep',[1 10]./100, ...
'Units','pixels', 'Position',[10 10 200 20], ...
'Callback',@slider_callback);
hTxt = uicontrol('Parent',hFig, 'Style','text', 'String','0.5', ...
'Units','pixels', 'Position',[290 28 30 15]);
imshow(im,'DisplayRange', [0.05 0.4], 'Parent',hAx)
hpatch = [];
for i =1:200
if spectImage(i) == 1
%disp('hi');
hpatch(i) = patch([x2(i+18) x2(i+19) x2(i+2) x2(i+1)],[y2(i+18) y2(i+19) y2(i+2) y2(i+1)],[0 0 0 0],'Parent',hAx, 'FaceColor','r', 'EdgeColor','none', 'FaceAlpha',0.5)
else
hpatch(i) = patch([x2(i+17) x2(i+18) x2(i+1) x2(i)],[y2(i+17) y2(i+18) y2(i+1) y2(i)],[0 0 0 0],'Parent',hAx, 'FaceColor','r', 'EdgeColor','none', 'FaceAlpha',0.5);
end
end
function slider_callback(hObj,eventdata)
%# get new alpha value
alpha = get(hObj,'Value');
%# update patches transparency and label
set(hTxt, 'String',num2str(alpha,'%.02f'))
set(hpatch, 'FaceAlpha',alpha)
end