필터 지우기
필터 지우기

How to get real screen size?

조회 수: 130 (최근 30일)
Mr M.
Mr M. 2016년 11월 17일
댓글: Christopher Wong 2021년 1월 3일
For a MacBook retina display with get(0,'ScreenSize') I get [1 1 1280 800]; Why?
  댓글 수: 2
Geoff Hayes
Geoff Hayes 2016년 11월 17일
편집: Geoff Hayes 2016년 11월 17일
What are you expecting instead? For my MacBook Pro (Retina, 15-inch), the resolution according to the About this Mac->Displays states 2880x1800, but if I call
>> get(0,'ScreenSize')
ans =
1 1 1920 1200
which is the scaled resolution of my display as shown at System Preferences->Displays.
Christopher Wong
Christopher Wong 2021년 1월 3일
yeah just use get(0, 'ScreenSize') or get(0, 'MonitorPositions)

댓글을 달려면 로그인하십시오.

답변 (2개)

Ulrik
Ulrik 2018년 3월 7일
You can get the real values by the following code:
ScreenPixelsPerInch = java.awt.Toolkit.getDefaultToolkit().getScreenResolution()
ScreenDevices = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
MainScreen = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getScreen()+1;
MainBounds = ScreenDevices(MainScreen).getDefaultConfiguration().getBounds();
MonitorPositions = zeros(numel(ScreenDevices),4);
for n = 1:numel(ScreenDevices)
Bounds = ScreenDevices(n).getDefaultConfiguration().getBounds();
MonitorPositions(n,:) = [Bounds.getLocation().getX() + 1,-Bounds.getLocation().getY() + 1 - Bounds.getHeight() + MainBounds.getHeight(),Bounds.getWidth(),Bounds.getHeight()];
end
MonitorPositions

Guillaume
Guillaume 2016년 11월 17일
Saying that, you should use the resolution returned by matlab, not the actual screen resolution. Using real screen resolution is why so many programs fail to scale properly on high DPI displays.
  댓글 수: 3
Guillaume
Guillaume 2016년 11월 17일
On any modern OS, there is a physical resolution and a virtual resolution which may or may not be equal. You should be using the latter so that whatever you're displaying does not become microscopic and unreadable on high DPI displays.
See this for more details. resolution is not resolution.
adams13
adams13 2019년 11월 29일
Mathworks was stupid enough to name "Pixel" something else and not provide anything like "pixelphysical" or so. We all know what "pixel on the screen" is. Why to misuse the known property without warning? I do have a high DPI display and an information from Matlab is crap.
This is what I have accidently found deep in the help ("figure", under "Units" for "pixels"):
Description
Pixels.
Starting in R2015b, distances in pixels are independent of your system resolution on Windows and Macintosh systems:
On Windows systems, a pixel is 1/96th of an inch.
On Macintosh systems, a pixel is 1/72nd of an inch.
On Linux® systems, the size of a pixel is determined by your system resolution.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Atomic, Molecular & Optical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by