【发布时间】:2019-09-04 15:52:16
【问题描述】:
我想编写一个自定义绘图视图,它应该利用 Retina 显示。我正在使用 2019 款 MacBook Pro。为了测试绘图,我只绘制宽度为 1px 的平行线。但是这些线条在整个视图中显示出不均匀的亮度。
我已经尝试过从屏幕坐标进行转换,如发布在 https://developer.apple.com/library/archive/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/APIs/APIs.html#//apple_ref/doc/uid/TP40012302-CH5-SW2
这是视图 draw(...) 方法中的相关代码块
// fill with a black background
let background: NSBezierPath = NSBezierPath(rect: bounds)
NSColor.black.setFill()
background.fill()
// create a path that displays vertical lines 1px wide
let path: NSBezierPath = NSBezierPath()
let height: CGFloat = self.bounds.height
var xPosition: CGFloat = 0.0
while self.frame.width > xPosition {
let rect:NSRect = NSRect(x: xPosition, y: 0, width: 0.5, height: height)
path.appendRect(rect)
xPosition += 10.0
}
NSColor.yellow.setFill()
path.fill()
【问题讨论】:
-
我也在 iPhone 上尝试了一个适配版本,在那里它正确显示了它
-
您的屏幕截图示例未发布或不可见,但我猜您正在看到抗锯齿的效果。
-
这也是我的想法,但我没有找到禁用它的方法,或者该怎么做
-
这可能是您的显示硬件造成的。另外,您的显示分辨率在系统偏好设置中是如何配置的?它是否缩放到默认值以外的其他值?
-
并非所有内容都未缩放;它是默认的 2560 x 1600 分辨率。其他一切看起来都很清晰,所以如果是配置问题,其他一切都应该有同样的问题