an overlay is a list (a java Vector) of Rois. You can step through all of these rois and manipulate them individually. Roughly like this (I have not tried it, beware of typos and mistakes)
Don't forget imp.updateAndDraw() to show the modified image.
If you have an Overlay all the rectangles are shown at the same time.
If you want to show the rectangles one after another and keep them editable, don't use an overlay but imp.setRoi for each roi.
> Thanks a lot Wayne. Your answer is very useful for me.
>
> Just one question more on this topic : do I have to create as overlay as
> rois if I want to move each overlay/roi with a specific value ?
>
> Best regards,
>
> Philippe
>
>
> 2013/11/19 Rasband, Wayne (NIH/NIMH) [E] <
[hidden email]>
>
>> On Nov 18, 2013, at 4:15 PM, Philippe GENDRE wrote:
>>
>>> Dear List,
>>>
>>> I need to retrieve the pixels of several ROIs in the same image and to
>>> visualize these ROIs.
>>>
>>> To do that, inside a loop, I draw several rectangles corresponding to
>> each
>>> ROI (using the rectangular selection tool for example) and I use the
>>> following lines to store the corresponding ROI and to visualize each of
>>> them on the image which is a live stream :
>>>
>>> roi[i]=img.getRoi();
>>> IJ.run("Add Selection...", "");
>>>
>>> My question is how to change (to translate) the ROIs *and* their
>>> corresponding overlay ?
>>
>> You can use the Overlay.translate(x,y) method to translate the overlay. An
>> overlay is essentially an array of ROIs so there is no need to maintain a
>> second array. Here is JavaScript code that creates an overlay consisting of
>> three rectangles, translates the overlay and then activates, one at a time,
>> each of the three rectangles.
>>
>> -wayne
>>
>> imp = IJ.createImage("Untitled", "8-bit black", 500, 500, 1);
>> overlay = new Overlay();
>> overlay.add(new Roi(50, 50, 120, 120));
>> overlay.add(new Roi(200, 150, 120, 120));
>> overlay.add(new Roi(300, 300, 140, 120));
>> imp.setOverlay(overlay);
>> imp.show();
>> IJ.wait(2000);
>> overlay.translate(50, 50);
>> imp.draw();
>> IJ.wait(1000);
>> rois = overlay.toArray();
>> for (i=0; i<rois.length; i++) {
>> imp.setRoi(rois[i]);
>> IJ.wait(1000);
>> }
>>
>> --
>> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>>
>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html