【问题标题】:View bounds and coordinates in Cocoa Mac OS X在 Cocoa Mac OS X 中查看边界和坐标
【发布时间】:2015-04-19 08:28:38
【问题描述】:

我的 Mac OS X 应用程序中有一个简单的自定义视图,它基本上是空的。代码如下:

@implementation MyDrawingView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
    NSLog(@"bounds:x:%f y:%f w:%f h:%f", self.bounds.origin.x, self.bounds.origin.y, self.bounds.size.width, self.bounds.size.height);
}

@end

这是 NSLog 的输出:

bounds:x:0.000000 y:0.000000 w:713.000000 h:509.000000

我在这里阅读了有关用户空间的信息:Coordinate Systems and Transforms

这是否意味着我的视图将在屏幕上显示 713/72 英寸宽?它在现实中并没有表现得那么广泛。我在视图上设置了背景颜色,因此我可以看到它的宽度。

【问题讨论】:

  • 要查看任何内容,您必须激活绘图。您缺少 [super drawRect:dirtyRect]。

标签: objective-c macos cocoa


【解决方案1】:

视野宽 713 点。 713*screenscale = 像素大小,然后您可以将其与 dpi 一起使用以获取显示的英寸;)

【讨论】:

  • a) 你从哪里获得屏幕比例和 b) 说用户空间固定为 72 点/英寸是什么意思?
  • a) 在 osx 上,您可以从 NSWindow 的 backingScale 属性中获得进程的比例
  • b) 这就是您所说的“屏幕宽 713/72 英寸?” -- 因此我假设你知道你有一个 72dpi 的显示器(如果你没有 dpi。使用stackoverflow.com/questions/12589198/…)
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2012-07-10
相关资源
最近更新 更多