Change the Unit of the 'LineWidth'-property to pixels (not points)

Dear Mathworks community,
I am currently working on a precise UI to plot some symbols that I create by plotting several lines in the same plot. The Problem that I have is, that I have the size of the lines in Pixels, but not in inches (points).
I know that there is a property called 'FontUnits' for the text size, where you can set the unit of the 'FontSize'-property to pixels, but now I also need a way to set the LineWidth in pixels as well.
I thank you for your help!

 Akzeptierte Antwort

Smit
Smit am 10 Feb. 2023
Hi,
I understand you want to know if there is a way to change the units of the “LineWidth” property to pixels instead of inches.
There isn’t a way to use pixels as units in the “LineWidth” property. You could possibly use the following workaround.
The “LineWidth” property uses the points as units, where 1 point = 1/72 inches as given in the documentation. You can also find out the “ScreenPixelsPerInch” property of your screen using the “get” operation as follows
get(0,'ScreenPixelsPerInch')
Using this information, you can calculate how many points equal a pixel.
inchesPerPixel = 1/get(0, 'ScreenPixelsPerInch');
pointsPerPixel = 72*inchesPerPixel;
And then use the calculated number of points to set “LineWidth”.
Hope this helps!

1 Kommentar

Thanks a lot! That´s exactly what I was looking for.
I appreciate your detailed explanation, have a great day!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 10 Feb. 2023

0 Stimmen

That is not possible. Lines are literally in pixels. Zooming an area containing a line does not make the line thicker. Zooming out from. an area with a lot of lines can result in nothing other than line pixels with nothing between them.

3 Kommentare

@Walter Roberson Thanks for your response. I know that zooming doesn´t change anything. But that's anyways not what I want.
It has nothing to do with zoom or whatever. 1/72 inch is a fixed size (which is the size of a point, the common unit of FontSize and LineWidth) as well as one pixel is a fixed size. Why should it not be possible to change the unit from points to pixels? Or at least find a workaround?
@Walter Roberson I am not quite sure what you´re saying with "lines are literally in pixels".
Lines are generated by the graphics hardware as being literally one pixel wide, independent of the current resolution settings. They are the thinnest possible graphics object.
High DPI correction does weird things to units. Points no longer refers to 1/72 of a inch and now has to do with virtual resolutions if I recall correctly.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021a

Gefragt:

Tom
am 10 Feb. 2023

Kommentiert:

Tom
am 10 Feb. 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by