Hello. I am trying to use the mouse click on an axes to drive the position of an xystage. I have created my a grid with identifying text:
axes(handles.axes1); cla resethold onax = gca;ax.XGrid = 'on';ax.YGrid = 'on';xticks(1:1:13)yticks([1:1:9])xlim([1 13]);ylim([1 9]);ax.GridColor = [0 .5 .5];ax.GridLineStyle = '--';ax.GridAlpha = 0.5;ax.Layer = 'top';hold on;format bankstartingRows = linspace(1, 8, 8);startingCols = linspace(1, 12, 12);% % Now get the starting integer rows / cols.
startingRows = int32(startingRows(1:end))startingCols = int32(startingCols(1:end))ct=0;for i=1:length(startingRows) for j=1:length(startingCols) ct=ct+1; %Add region number
xr=double(startingCols(j))+0.3; yr=double(startingRows(i))+0.5; hold on text(xr,yr,[num2str(i),',',num2str(j)],'FontSize', 8, 'Color', [1 0 1]); endendset(handles.axes1,'Visible','on');set(handles.axes1,'ButtonDownFcn',@ImageClickCallback); %An alternative to axes ButtonDownfunction
I then want to be able to click anywhere on the grid and return the number sin the grid. Its fine just to return the coordinates of the mouse. I have tried the axes1 ButtondownFunction via:
axes(handles.axes1)cpt = get(gca,'CurrentPoint')pt = cpt(1,1:2)x=round(pt(1))y=round(pt(2))
But it only works before the grid and numbers are drawn on. I have read this only works when actually clicking on the grid and not areas inside i.e. the boxes – which is what I want.
Best Answer