我想在轴上使用几个交互式矩形(imrect
)。其中一些矩形应该连接起来。那就是:
但我不知道该怎么做。我无法找到一个矩形颜色改变后被激活的回调。我也不知道如何修改矩形的外观(除了颜色)以显示矩形已被选中。而且,遗憾的是,我不知道如何检测用户何时点击一下。
谢谢!
答案 0 :(得分:2)
部分答案:
假设您有几组矩形,表示为单元格数组(每组的单元格元素)
每个组是ni
- by-4数组,表示ni
矩形。例如:
gRects = { [ 20 10 200 300; 40 60 200 100 ], ...
[ 50 50 150 150 ], ...
[ 150 200 30 50 ; 150 10 100 100 ; 200 30 40 100 ] };
也就是说,你有三组,第一组有2个矩形,第二组有一个,第三组有三个。
您现在可以绘制它们,并存储句柄以供将来修改
ng = numel( gRects ); %// how many groups
clrs = rand( ng,3 ); %// randomly select a color per group
img = imread('cameraman.tif'); %// a backgroud ?
figure;
imshow( img, 'border', 'tight' );hold on;
grH = cell( 1, ng );
for gi=1:ng
ni = size( gRects{gi}, 1 ); %// num rects in current group
grH{gi} = zeros( 1, ni );
for ri = 1:ni
grH{gi}(ri) = rectangle('Position',gRects{gi}(ri,:),...
'EdgeColor', clrs(gi,:), 'LineWidth', 2, 'LineStyle', ':' );
end
end
现在,如果你想“突出显示”其中一个组,例如第三个组:
gi = 3;
ni = size( gRects{gi}, 1 ); %// num rects in current group
for ri = 1:ni
set( grH{gi}(ri),...
'LineWidth', 4, 'LineStyle', '-' );
end