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 ************************************************** |
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 > ************************************************** |
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 ************************************************** |
Free forum by Nabble | Edit this page |