2014-04-09 2 views
1

Я новичок в Matlab, поэтому могу пропустить много вещей. Я пытаюсь нажать картинку вверх или вниз, используя кнопку. но я застрял. Я хочу, чтобы, когда я нажимаю кнопку, он должен изменить позицию. Функция ri_call (...) увеличивает строку по значению, чтобы она перемещала изображение вверх головой при нажатии кнопки «приращение строки».способ применения комплект (gca, ...) функция сверху кнопка?

так вот мой код:

function ri_Callback(hObject, eventdata, handles) 
% hObject handle to ri (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
handles.r = handles.r -1; 
    I= imread('pout.tif'); %picture reading 
    imshow(I); 
    I(handles.h:handles.r,handles.wid:handles.col,:) = 0; 
    I= set(gca,'Position',get(gca,'Position') + [handles.r handles.c 0 0]); % ????? not working on button 
    imshow(I); 
    % Update handles structure 
    guidata(hObject, handles); 

end 

ответ

2

Не получить выход из set. Вместо

I = set(gca,...) 

который перезаписывает изображение, просто сделайте

set(gca,...) 

Кроме того, вы должны установить единицы сделать set правильно. Предполагая handles.r и handles.c имеют пиксели:

set(gca,'Units','Pixels') 
set(gca,'Position',...) 

Если вы хотите, чтобы переместить маску, ввести х, у коррекций к маске:

I(yoffset+(handles.h:handles.r),xoffset+(handles.wid:handles.col),:) = 0; 

Но я бы интерпретировать handles.h как высота , handles.wid в качестве ширины и handles.r в качестве начальной координаты y угла поля и handles.col в качестве начальной координаты x поля. Эта интерпретация даст команду:

I((1:handles.h)+handles.r+yoffset-1,(1:handles.wid)+handles.col+xoffset-1,:) = 0; 
+0

изображение становится невидимым любая идея ???? – user3508182

+0

@ user3508182 См. Обновление. Вы должны установить единицы измерения в пикселях. – chappjc

+0

эти 3 строки, которые я добавил, но изображение становится невидимым. без изменений. любезно исправьте меня, если я ошибаюсь. набор (GCA, 'Units', handles.r); set (gca, 'Units', handleles.col); set (gca, 'Position', get (gca, 'Position') + [handleles.r handles.col 0 0]); – user3508182

Смежные вопросы