2014-01-21 89 views
0

我想在MATLAB中创建一个网格。交互式网格

网格的行数和列数由用户在运行时输入。

当用户点击在网格上的一个特定块/平方,

  1. 我需要获取块的坐标(即(1,1)(2,3)等)

  2. 我还需要为该方块/块着色。

有关我该如何做的任何建议?

回答

1

,可作为首发:

% draw a rectangle 
% store coordinates in the userdata 
r = rectangle('Position', [1 1 1 1], 'UserData', [1,1], 'FaceColor', 'r'); 
% set the clicked-callback: 
set(r, 'ButtonDownFcn', @showIndex); 

function showIndex(hObject, evt) 
    disp('Clicked on:'); 
    disp(get(hObject, 'UserData')); 
end 

[代码语法编辑]

编辑:

关于坐标: 当然你也可以使用自己的坐标,想必你得到一个类似于这样的循环:

for ix=1:n % loop over columns 
    for iy=1:m % loop over rows 
     % modify coordinates to your needs 
     % e.g. to make the y-index start at 1 from top to bottom: 
     coords = [ix,m-iy+1]; 
     r(ix,iy) = rectangle('Position', [ix,iy,1,1], 'UserData', coords, ...); 
     % remaining stuff... 
    end 
end 
+0

所以你建议我创建用户输入的许多矩形?例如,如果用户输入他想要一个5x5网格,我应该创建25个矩形? – Dinesh

+0

我试图创建多个矩形,但坐标'(1,1)'从左下方开始,而不是左上方。有关如何处理这种情况的任何建议。 – Dinesh

+0

看到我上面的编辑 - 你可以根据你自己的坐标系统自由设置'UserData'。 – sebastian