wma*_*but 6 macos core-graphics swift
当以编程方式使用OS X(文档)中的显示模式时,我发现CGDisplayCopyAllDisplayModes在"系统偏好设置"中显示最右边的选项.
打印当前显示模式大小和所有可用显示模式大小的简单实用程序输出此信息
current size: 1920x1200
available sizes:
2880x1800
1440x900
2560x1600
2048x1280
1024x768
800x600
640x480
1680x1050
1280x800
Run Code Online (Sandbox Code Playgroud)
1920x1200 是一个有效的选择 
"系统偏好设置"提供的所有其他选项均在列表中显示.有没有人知道为什么1920x1200不包括在内?我已尝试更改为系统首选项中的另一个预定义值,但它不会导致1920x1200包含.
可以通过引用私有API来找到"缩放"显示模式.
您可以创建一个使私有方法可用的头文件:请参阅我从该项目中借用的这个要点.
然后你可以看到所有模式,包括像这样的缩放模式
print("Private modes:\n")
var numDisplayModes: Int32 = 0
CGSGetNumberOfDisplayModes(mainDisplayID, &numDisplayModes)
print("Num modes \(numDisplayModes)")
for i in 0...(numDisplayModes-1) {
var pmode: CGPrivDisplayMode = CGPrivDisplayMode()
CGSGetDisplayModeDescriptionOfLength(mainDisplayID, CInt(i), &pmode, CInt(sizeof(CGPrivDisplayMode)))
print("\t\(pmode.modeNumber): \(pmode.width)x\(pmode.height) -- \(pmode.density) \n")
}
Run Code Online (Sandbox Code Playgroud)
有仅记录在标题中的公共 API。CGDisplayCopyAllDisplayModes()接受一个options参数,它是一个字典。文档(甚至标题)说它未使用,您必须通过NULL,但您可以通过 keykCGDisplayShowDuplicateLowResolutionModes和 value传递字典kCFBooleanTrue。
选项名称不是很清楚。它包括一堆额外的模式。
此外,您可能需要使用CGDisplayModeGetPixelWidth()和CGDisplayModeGetPixelHeight()区分后备存储的点大小和像素大小。(CGDisplayModeGetWidth()并CGDisplayModeGetHeight()返回点大小。通过比较这些值,您可以确定模式是否已缩放。)
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |