Bạn có thể sử dụng NSScreen
để nhận kích thước của (các) hiển thị được đính kèm theo pixel, nhưng điều này sẽ không cung cấp cho bạn kích thước vật lý/PPI của màn hình và thực tế tôi không nghĩ rằng có bất kỳ API nào sẽ có thể thực hiện điều này một cách đáng tin cậy.
Bạn có thể yêu cầu một cửa sổ cho độ phân giải của nó như sau:
NSDictionary* deviceDescription = [window deviceDescription];
NSSize resolution = [[deviceDescription objectForKey:NSDeviceResolution] sizeValue];
này sẽ hiện cung cấp cho bạn một NSSize
của {72,72}
cho tất cả màn hình, không có vấn đề gì PPI thực tế của họ. Điều duy nhất làm thay đổi giá trị này là thay đổi hệ số nhân rộng trong tiện ích Quartz Debug, hoặc nếu Apple từng bật giao diện người dùng độc lập với độ phân giải. Bạn có thể lấy các yếu tố quy mô hiện tại bằng cách gọi:
[[NSScreen mainScreen] userSpaceScaleFactor];
Nếu bạn thực sự phải biết độ phân giải chính xác (và tôi muốn được quan tâm để biết lý do tại sao bạn nghĩ rằng bạn làm), bạn có thể tạo ra một thói quen màn hình hiệu chuẩn và có người dùng đo một dòng trên màn hình với một người cai trị vật lý thực tế. Thô, vâng, nhưng nó sẽ hoạt động.
Nguồn
2010-04-12 12:58:06
Hãy cẩn thận với điều này. Thông tin về DPI nói chung không đáng tin cậy. Trình điều khiển có thể làm cho nó sai và theo dõi thông tin EDID có thể nói dối, đôi khi rất thô lỗ. Đảm bảo có ghi đè. – bobince