MacOSXでの物理的な画面サイズを知りたいのですが。ただしNSDeviceResolution
、常に間違った値(72)を報告しているため、解像度/dpiの計算結果が間違っています。
「AboutThisMac」の中には、Macモデルの文字列があります。私のものは「15インチ、2011年初頭」です。ですから、(おそらくobj-cで)その文字列を読み取る方法があり、それを物理的な画面サイズとして使用できるのではないかと思います。
どんな助けでも大歓迎です。
MacOSXでの物理的な画面サイズを知りたいのですが。ただしNSDeviceResolution
、常に間違った値(72)を報告しているため、解像度/dpiの計算結果が間違っています。
「AboutThisMac」の中には、Macモデルの文字列があります。私のものは「15インチ、2011年初頭」です。ですから、(おそらくobj-cで)その文字列を読み取る方法があり、それを物理的な画面サイズとして使用できるのではないかと思います。
どんな助けでも大歓迎です。
を使用CGDisplayScreenSize
して、画面の物理サイズをミリメートル単位で取得できます。そこから、解像度がわかっている場合は DPI を計算できます。
だから例えば
NSScreen *screen = [NSScreen mainScreen];
NSDictionary *description = [screen deviceDescription];
NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue];
CGSize displayPhysicalSize = CGDisplayScreenSize(
[[description objectForKey:@"NSScreenNumber"] unsignedIntValue]);
NSLog(@"DPI is %0.2f",
(displayPixelSize.width / displayPhysicalSize.width) * 25.4f);
// there being 25.4 mm in an inch
それ@"NSScreenNumber"
は危険に見えますが、からを取得する明示的に文書化された手段です。CGDirectDisplayID
NSScreen