XCode设计 - 如何创建地图?

时间:2011-07-15 17:39:45

标签: xcode cocoa nsview

所以我基本上有一堆路线(想想3D位置),我想在视图中绘制它们。

我之前没有真正做任何图形处理,并且好奇我是如何开始考虑在我的Cocoa应用程序的XCode中做这个。

有人有任何建议吗?

我应该继承NSView吗?我应该使用OpenGL吗?

谢谢!

编辑:所以我能够将NSView子类化,请参见此处:http://groovyape.com/map.png

这是最好的方法吗? (我意识到它只是2D,我害怕尝试3D呵呵)。如果我想让人们点击圈子怎么办?我该怎么做?

1 个答案:

答案 0 :(得分:1)

在NSView子类中,您可以覆盖各种鼠标事件处理程序以执行任何操作:

- (void)mouseDown:(NSEvent *)event;
- (void)mouseDragged:(NSEvent *)event;
- (void)mouseUp:(NSEvent *)event;

然后你需要一种方法来知道圈子的位置,这样你就可以知道它们何时被点击。如果你有一个圆圈作为NSPoint和半径那么这样的东西就可以了

- (BOOL)isPoint:(NSPoint)click inCircleAtPoint:(NSPoint)centre withRadius:(float)r
{
    float dx = click.x - centre.x;
    float dy = click.y - centre.y;

    // Get the distance from the click to the centre of the circle
    float h = hypot (dx, dy);

    // is the distance less than the radius?
    return (h < r);
}

- (void)mouseDown:(NSEvent *)event
{
    NSPoint clickPoint = [event locationInWindow];

    if ([self isPoint:clickPoint inCircleAtPoint:mapPoint withRadius:5.0]) {
        // Click was in point
    }
}