Changing the line width of a freeline roi for displaying in a non-destrutive graphics overlay

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Changing the line width of a freeline roi for displaying in a non-destrutive graphics overlay

Fernando Sales
Hi,

I've been problems to change the line width of a freeline roi for displaying
it in a non-destrutive graphics overlay. I've made some tests based on the
example below.
http://rsb.info.nih.gov/ij/plugins/download/MultiColor_Graphic_Overlay.java

There is a piece of the code.

// Initalization
ImagePlus imp = WindowManager.getCurrentImage();
ImageCanvas ic = imp.getCanvas();
Vector list = new Vector();
int select = 4; // Parameter for select the ROi of interest
IJ.run("Add to Manager ");
IJ.runMacro("roiManager(\"Open\",\"C:\\\\Basutto1.zip\")"); // Load the roi
for ROI Manager
IJ.runMacro("roiManager(\"Select\","+select+ ")"); // Select thr roi of
interest

If the code below is used, the roi don't change the line width:

Roi roi = imp.getRoi();
addElement(list,roi,Color.red,4);
ic.setDisplayList(list);
ic.repaint();
IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
Roi roi1 = imp.getRoi();
addElement(list,roi1,Color.green,1);
ic.repaint();

But, if i use this code (creating a ShapeRoi, adjusting the line width and
after deleting this ShapeRoi) it works:

Roi roi = imp.getRoi();
Shape shape = (Shape) roi.getPolygon();
addElement(list, shape, Color.BLACK, 2);
list.remove(shape);
addElement(list,roi,Color.red,4);
ic.setDisplayList(list);
ic.repaint();
IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
Roi roi1 = imp.getRoi();
addElement(list,roi1,Color.green,1);
ic.repaint();
}

What kind of problem is happening? I can't see the difference between this
two pieces of code...is there somebody who could help me?

Thanks,
--
**************************************************
Fernando José Ribeiro Sales
**************************************************
Email: [hidden email]
Tel: +55(11) 82020303
**************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Changing the line width of a freeline roi for displaying in a non-destrutive graphics overlay

Michael Schmid
Hi Fernando,

to understand the problem, you should have a look at the
addElement method in your code.
I guess that you have copied it from
http://rsb.info.nih.gov/ij/plugins/download/ 
MultiColor_Graphic_Overlay.java

        void addElement(Vector list, Shape shape, Color color, int lineWidth) {
                Roi roi = new ShapeRoi(shape);
                roi.setInstanceColor(color);
                roi.setLineWidth(lineWidth);
                list.addElement(roi);
        }

It requires the second argument to have class Shape.

Michael
________________________________________________________________

On 31 Mar 2008, at 16:42, Fernando Sales wrote:

> Hi,
>
> I've been problems to change the line width of a freeline roi for  
> displaying
> it in a non-destrutive graphics overlay. I've made some tests based  
> on the
> example below.
> http://rsb.info.nih.gov/ij/plugins/download/ 
> MultiColor_Graphic_Overlay.java
>
> There is a piece of the code.
>
> // Initalization
> ImagePlus imp = WindowManager.getCurrentImage();
> ImageCanvas ic = imp.getCanvas();
> Vector list = new Vector();
> int select = 4; // Parameter for select the ROi of interest
> IJ.run("Add to Manager ");
> IJ.runMacro("roiManager(\"Open\",\"C:\\\\Basutto1.zip\")"); // Load  
> the roi
> for ROI Manager
> IJ.runMacro("roiManager(\"Select\","+select+ ")"); // Select thr  
> roi of
> interest
>
> If the code below is used, the roi don't change the line width:
>
> Roi roi = imp.getRoi();
> addElement(list,roi,Color.red,4);
> ic.setDisplayList(list);
> ic.repaint();
> IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
> Roi roi1 = imp.getRoi();
> addElement(list,roi1,Color.green,1);
> ic.repaint();
>
> But, if i use this code (creating a ShapeRoi, adjusting the line  
> width and
> after deleting this ShapeRoi) it works:
>
> Roi roi = imp.getRoi();
> Shape shape = (Shape) roi.getPolygon();
> addElement(list, shape, Color.BLACK, 2);
> list.remove(shape);
> addElement(list,roi,Color.red,4);
> ic.setDisplayList(list);
> ic.repaint();
> IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
> Roi roi1 = imp.getRoi();
> addElement(list,roi1,Color.green,1);
> ic.repaint();
> }
>
> What kind of problem is happening? I can't see the difference  
> between this
> two pieces of code...is there somebody who could help me?
>
> Thanks,
> --
> **************************************************
> Fernando José Ribeiro Sales
> **************************************************
> Email: [hidden email]
> Tel: +55(11) 82020303
> **************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Changing the line width of a freeline roi for displaying in a non-destrutive graphics overlay

Fernando Sales
Michael,

i created a new methos addElement where the second argument is a Roi instead
of a Shape. I forgot to put this in my last msg.
The methods are:

    void addElement(Vector list, Roi roi, Color color, int lineWidth) {
        roi.setInstanceColor(color);
        roi.setLineWidth(lineWidth);
        System.out.println("ROI Properties: "+roi.toString());
        list.addElement(roi);
    }

    void addElement(Vector list, Shape shape, Color color, int lineWidth) {
        Roi roi = new ShapeRoi(shape);
        roi.setInstanceColor(color);
        roi.setLineWidth(lineWidth);
        list.addElement(roi);
    }

I guess that the problem was not this related by you, Michael.
By the way, thanks.

But i still have the same doubt.
Somebody knows what is happening?

Thanks in advance,
Fernando

On Mon, Mar 31, 2008 at 11:52 AM, Michael Schmid <[hidden email]>
wrote:

> Hi Fernando,
>
> to understand the problem, you should have a look at the
> addElement method in your code.
> I guess that you have copied it from
> http://rsb.info.nih.gov/ij/plugins/download/
> MultiColor_Graphic_Overlay.java
>
>         void addElement(Vector list, Shape shape, Color color, int
> lineWidth) {
>                Roi roi = new ShapeRoi(shape);
>                roi.setInstanceColor(color);
>                roi.setLineWidth(lineWidth);
>                list.addElement(roi);
>        }
>
> It requires the second argument to have class Shape.
>
> Michael
> ________________________________________________________________
>
> On 31 Mar 2008, at 16:42, Fernando Sales wrote:
>
> > Hi,
> >
> > I've been problems to change the line width of a freeline roi for
> > displaying
> > it in a non-destrutive graphics overlay. I've made some tests based
> > on the
> > example below.
> > http://rsb.info.nih.gov/ij/plugins/download/
> > MultiColor_Graphic_Overlay.java
> >
> > There is a piece of the code.
> >
> > // Initalization
> > ImagePlus imp = WindowManager.getCurrentImage();
> > ImageCanvas ic = imp.getCanvas();
> > Vector list = new Vector();
> > int select = 4; // Parameter for select the ROi of interest
> > IJ.run("Add to Manager ");
> > IJ.runMacro("roiManager(\"Open\",\"C:\\\\Basutto1.zip\")"); // Load
> > the roi
> > for ROI Manager
> > IJ.runMacro("roiManager(\"Select\","+select+ ")"); // Select thr
> > roi of
> > interest
> >
> > If the code below is used, the roi don't change the line width:
> >
> > Roi roi = imp.getRoi();
> > addElement(list,roi,Color.red,4);
> > ic.setDisplayList(list);
> > ic.repaint();
> > IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
> > Roi roi1 = imp.getRoi();
> > addElement(list,roi1,Color.green,1);
> > ic.repaint();
> >
> > But, if i use this code (creating a ShapeRoi, adjusting the line
> > width and
> > after deleting this ShapeRoi) it works:
> >
> > Roi roi = imp.getRoi();
> > Shape shape = (Shape) roi.getPolygon();
> > addElement(list, shape, Color.BLACK, 2);
> > list.remove(shape);
> > addElement(list,roi,Color.red,4);
> > ic.setDisplayList(list);
> > ic.repaint();
> > IJ.runMacro("roiManager(\"Select\","+(select+1)+ ")");
> > Roi roi1 = imp.getRoi();
> > addElement(list,roi1,Color.green,1);
> > ic.repaint();
> > }
> >
> > What kind of problem is happening? I can't see the difference
> > between this
> > two pieces of code...is there somebody who could help me?
> >
> > Thanks,
> > --
> > **************************************************
> > Fernando José Ribeiro Sales
> > **************************************************
> > Email: [hidden email]
> > Tel: +55(11) 82020303
> > **************************************************
>



--
**************************************************
Fernando José Ribeiro Sales
**************************************************
Email: [hidden email]
Tel: (11) 82020303
**************************************************