I want to draw some individual overlay objects per slice on a stack.
There is a problem (bug) involving Overlay.drawLine and Overlay.lineTo. See the below example macro. The overlay lines end up global instead of per slice, and the color is not correct. This bug does not seem to apply to the other Overlay.draw* commands. As a workaround, if you insert an extra Overlay.show immediately after the respective calls to Overlay.lineTo and Overlay.drawLine, it behaves correctly (uncomment to test this). Demo macro: ------------------------------ newImage("temp", "RGB black", 200, 200, 4); x = 100; y = 100; run("Set... ", "zoom=200 x=100 y=100"); for (i=1; i <= 4; i++) { setSlice(i); setColor("cyan"); Overlay.drawString(i, x, y); Overlay.setPosition(i); setColor("blue"); Overlay.drawEllipse(x-40,y-i*10+10, 20, 20) Overlay.setPosition(i); setColor("green"); Overlay.drawRect(x-50,y-i*10,40,40); Overlay.setPosition(i); setColor("orange"); Overlay.moveTo(x+10,y+i*10); Overlay.lineTo(x+20,y+i*10); //Overlay.show; //works correctly if this is called here Overlay.setPosition(i); setColor("red"); Overlay.drawLine(x+30,y+i*10,x+50,y+i*10); //Overlay.show; //works correctly if this is called here Overlay.setPosition(i); } Overlay.show ------------------------------ I am using daily build ImageJ 1.52p with Java 1.8 on Windows 7/64-bit. Stein -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
> On Jun 3, 2019, at 8:25 AM, Stein Rørvik <[hidden email]> wrote:
> > I want to draw some individual overlay objects per slice on a stack. > There is a problem (bug) involving Overlay.drawLine and Overlay.lineTo. > See the below example macro. This bug is fixed in the latest daily build (1.52p41). -wayne > The overlay lines end up global instead of per slice, and the color is not correct. > This bug does not seem to apply to the other Overlay.draw* commands. > > As a workaround, if you insert an extra Overlay.show immediately after the respective calls to Overlay.lineTo and Overlay.drawLine, it behaves correctly (uncomment to test this). > > Demo macro: > ------------------------------ > newImage("temp", "RGB black", 200, 200, 4); > x = 100; > y = 100; > run("Set... ", "zoom=200 x=100 y=100"); > for (i=1; i <= 4; i++) { > setSlice(i); > setColor("cyan"); > Overlay.drawString(i, x, y); > Overlay.setPosition(i); > setColor("blue"); > Overlay.drawEllipse(x-40,y-i*10+10, 20, 20) > Overlay.setPosition(i); > setColor("green"); > Overlay.drawRect(x-50,y-i*10,40,40); > Overlay.setPosition(i); > setColor("orange"); > Overlay.moveTo(x+10,y+i*10); > Overlay.lineTo(x+20,y+i*10); > //Overlay.show; //works correctly if this is called here > Overlay.setPosition(i); > setColor("red"); > Overlay.drawLine(x+30,y+i*10,x+50,y+i*10); > //Overlay.show; //works correctly if this is called here > Overlay.setPosition(i); > } > Overlay.show > ------------------------------ > > I am using daily build ImageJ 1.52p with Java 1.8 on Windows 7/64-bit. > > Stein -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |