2014-08-28 3 views
0

Я больше на стороне кодирования no0b, поэтому заранее извиняюсь за глупый вопрос и/или плохое кодирование. В принципе, у меня есть мечта о том, чтобы щелкнуть, поместить неподходящее место, записать местоположение этого наводящего, а затем снова щелкнуть на другую точку (и записать местоположение этой точки), пока я не нажму кнопку «Готово». Однако мой код идет вбок.Matlab Impoint и Uicontrol

Моя кнопка создана с помощью строки ниже. Я установил переменную j в 1 ранее в коде, только потому, что я хотел иметь возможность делать две вещи с помощью CallBack, и поэтому я хотел, чтобы какой-то способ указать кнопку нажата (я, однако, конечно не прилагается к этому как метод). Когда пользователь нажимает кнопку, мне бы очень хотелось, чтобы 1) цикл для новых пометок, чтобы остановить, и 2) изображение закрыть.

uicontrol ('Style', 'pushbutton', 'Position', [80 0 70 20], 'String', 'Done', 'CallBack', 'j = 0;');

Моя петля для impoints (с дополнительным материалом, что я не думаю, что это отношение удален) выглядит следующим образом:

for k = 1:2*mboxes*nboxes 
    if j == 0 
     close(gcf); 
     break; 
    elseif j == 1 
     fprintf('At line 56, j is %d and k is %d\n', j, k) 
     h = impoint; 
     setColor(h,'k'); 
     location = h.getPosition; 
    end 

    clear h; 
end 

На данный момент мои проблемы два раза. Действительно, три раза, но я могу неохотно жить с третьей проблемой. Проблема 1, которая больше всего для меня касается, заключается в том, что я должен щелкнуть по кнопке до того, как я хочу закончить, что означает, что я нажимаю кнопку, а затем устанавливаю другую точку перед закрытием окна. (Другими словами, он проходит цикл за один раз больше, чем я хочу, и я не уверен, как сказать ему, чтобы он этого не делал.) Проблема 2, которая, я уверен, должна сказать мне что-то о том, как это происходит, является что impoints не удаляются, поскольку я иду (хотя h, кажется, удаляется в конце). Проблема 3, которая эстетична, но меня действительно раздражает, заключается в том, что я продолжаю получать синий цвет в верхнем левом углу (0,0) моего изображения, прежде чем щелкнуть, где я действительно хочу.

Любая помощь будет очень, очень ценится. :)

ответ

0

Я не уверен в этом, но я могу ответить только здесь не комментирую .... так что я предполагаю:

адресация проблемы 2: ваш час не удаляется укомплектовать, попробуйте использовать delete (h) вместо clear. Это также должно привести к вашей проблеме. 3

Адрес вашей проблемы 1: Непосредственный доступ к вашей позиции щелчка. Если вы нажмете на кнопку, перекрыться и дать вам эту ошибку. Возможно, посмотрите на setPositionConstraintFcn может помочь вам с этим (включение клика только для области, в которой вы хотите, чтобы она работала).

+0

возможно, используя clickevent с указанными осями a вашего сюжета будет проще, чем навязать вам. выглядит примерно так: 'set (get (a, 'Children'), 'ButtonDownFcn', {@ clickevent, a}); Функция clickevent (hObject, eventdata, a) h = get (a, 'CurrentPoint'); конец' – Iris

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