Overlay.drawString has wrong vertical position with Left justification

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

Overlay.drawString has wrong vertical position with Left justification

Stein Rørvik
When combining setJustification("Right") or ("Left") and Overlay.drawString(...
the vertical justification is too high when the horizontal justification is "Left".
They should have been the same. setJustification("Right") gives a correct result.

Try this macro:
--------

run("Close All");
xSize = 200;
ySize = 200;
newImage("Untitled", "8-bit black", xSize, ySize, 1);
setLocation(100, 100);
setFont("SanSerif", 12);
setLineWidth(1);
xPos = xSize/2;
yPos = ySize/2;

setColor("Red");
Overlay.drawLine(xPos, 0, xPos, ySize);
Overlay.drawLine(0, yPos, xSize, yPos);
Overlay.show;

setColor("Yellow");
setJustification("Left");
Overlay.drawString("Left adjusted", xPos, yPos);
setJustification("Right");
Overlay.drawString("Right adjusted", xPos, yPos);
Overlay.show;

run("Duplicate...", " ");
run("Set... ", "zoom=200");
setLocation(350, 100);

run("Duplicate...", " ");
run("Set... ", "zoom=400");
setLocation(800, 100);

//the Right aligned text is drawn correctly

//when zooming in, the Left adjusted text moves upwards relative to the previous position
//when zooming in, the Right adjusted text stays in the same position as the flattened version

--------

Also, sometimes run("Set... ", "zoom=400") does not display correctly, you must zoom back to 100% and rezoom to update the image.

I am using daily build ImageJ 1.52h with Java 1.6 on Windows 7/64-bit.


Stein


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Overlay.drawString has wrong vertical position with Left justification

Wayne Rasband-2
> On Sep 28, 2018, at 3:50 AM, Stein Rørvik <[hidden email]> wrote:
>
> When combining setJustification("Right") or ("Left") and Overlay.drawString(...
> the vertical justification is too high when the horizontal justification is "Left".
> They should have been the same. setJustification("Right") gives a correct result.

This bug is fixed in the latest ImageJ daily build (1.52h18). The problem with saving and reopening images with overlays containing right-justified text is also fixed.

-wayne


>
> Try this macro:
> --------
>
> run("Close All");
> xSize = 200;
> ySize = 200;
> newImage("Untitled", "8-bit black", xSize, ySize, 1);
> setLocation(100, 100);
> setFont("SanSerif", 12);
> setLineWidth(1);
> xPos = xSize/2;
> yPos = ySize/2;
>
> setColor("Red");
> Overlay.drawLine(xPos, 0, xPos, ySize);
> Overlay.drawLine(0, yPos, xSize, yPos);
> Overlay.show;
>
> setColor("Yellow");
> setJustification("Left");
> Overlay.drawString("Left adjusted", xPos, yPos);
> setJustification("Right");
> Overlay.drawString("Right adjusted", xPos, yPos);
> Overlay.show;
>
> run("Duplicate...", " ");
> run("Set... ", "zoom=200");
> setLocation(350, 100);
>
> run("Duplicate...", " ");
> run("Set... ", "zoom=400");
> setLocation(800, 100);
>
> //the Right aligned text is drawn correctly
>
> //when zooming in, the Left adjusted text moves upwards relative to the previous position
> //when zooming in, the Right adjusted text stays in the same position as the flattened version
>
> --------
>
> Also, sometimes run("Set... ", "zoom=400") does not display correctly, you must zoom back to 100% and rezoom to update the image.
>
> I am using daily build ImageJ 1.52h with Java 1.6 on Windows 7/64-bit.
>
>
> Stein

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: Overlay.drawString has wrong vertical position with Left justification

Stein Rørvik
Thanks, I have tested and found both fixes to work well.

The text is now drawn a little higher with setJustification("Right") than previously; the new placement is more correct. The lower outer boundary of the text now matches the requested vertical position.

Stein

-----Original Message-----
From: ImageJ Interest Group <[hidden email]> On Behalf Of Wayne Rasband
Sent: 02. oktober 2018 03:27
To: [hidden email]
Subject: Re: Overlay.drawString has wrong vertical position with Left justification

> On Sep 28, 2018, at 3:50 AM, Stein Rørvik <[hidden email]> wrote:
>
> When combining setJustification("Right") or ("Left") and Overlay.drawString(...
> the vertical justification is too high when the horizontal justification is "Left".
> They should have been the same. setJustification("Right") gives a correct result.

This bug is fixed in the latest ImageJ daily build (1.52h18). The problem with saving and reopening images with overlays containing right-justified text is also fixed.

-wayne


>
> Try this macro:
> --------
>
> run("Close All");
> xSize = 200;
> ySize = 200;
> newImage("Untitled", "8-bit black", xSize, ySize, 1); setLocation(100,
> 100); setFont("SanSerif", 12); setLineWidth(1); xPos = xSize/2; yPos =
> ySize/2;
>
> setColor("Red");
> Overlay.drawLine(xPos, 0, xPos, ySize); Overlay.drawLine(0, yPos,
> xSize, yPos); Overlay.show;
>
> setColor("Yellow");
> setJustification("Left");
> Overlay.drawString("Left adjusted", xPos, yPos);
> setJustification("Right"); Overlay.drawString("Right adjusted", xPos,
> yPos); Overlay.show;
>
> run("Duplicate...", " ");
> run("Set... ", "zoom=200");
> setLocation(350, 100);
>
> run("Duplicate...", " ");
> run("Set... ", "zoom=400");
> setLocation(800, 100);
>
> //the Right aligned text is drawn correctly
>
> //when zooming in, the Left adjusted text moves upwards relative to
> the previous position //when zooming in, the Right adjusted text stays
> in the same position as the flattened version
>
> --------
>
> Also, sometimes run("Set... ", "zoom=400") does not display correctly, you must zoom back to 100% and rezoom to update the image.
>
> I am using daily build ImageJ 1.52h with Java 1.6 on Windows 7/64-bit.
>
>
> Stein

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html