2011-10-18 122 views
0

我有一個關於CorePlot的問題。我的問題是: 我繪製了一條曲線。下一個任務是:曲線選擇。 我已添加處理程序:CorePlot陰謀命中測試

但這並不起作用。 任何想法? 謝謝。

- (BOOL)npvCurveContainPoint:(CGPoint)point 
{ 
    if ([[graph allPlots] count] == 0) { 
     return NO; 
    } 
    CPTPlot* plot = [graph plotAtIndex:0]; 
    BOOL xContains = [[plot plotRangeForCoordinate:CPTCoordinateX] containsDouble:point.x]; 
    BOOL yContains = [[plot plotRangeForCoordinate:CPTCoordinateY] containsDouble:point.y]; 
    if (xContains && yContains) { 
     return YES; 
    } 
    return NO; 
} 

#pragma mark - Plot Space Delegate Methods 
- (BOOL)plotSpace:(CPTPlotSpace*)space shouldHandlePointingDeviceDownEvent:(id)event atPoint:(CGPoint)point 
{ 
    CGPoint pointInPlotArea = [graph convertPoint:point fromLayer:graph.plotAreaFrame]; 
    if ([self npvCurveContainPoint:pointInPlotArea]) { 
     NSLog(@"Curve is selected!!!"); 
    } 
    return NO; 
} 

回答

0

我不確定你想要測試的是什麼,但是你正在混合座標系。傳遞給繪圖空間代表方法的點位於繪圖區域層的座標視圖中。將其轉換爲整個圖層的座標系,然後根據座標值繪製空間點數據

繪圖空間定義了屏幕上數據和繪圖區域之間的映射。 xRangelocation對應於繪圖區域的左側邊緣,其終點(location + length)對應於右手邊緣。類似地,yRangelocation對應於繪圖區域的底部邊緣,其終點對應於頂部邊緣。請注意,繪圖範圍可能有負值,這意味着終點的數據座標可能小於起始位置。

+0

好的,謝謝你的回答。也許我應該解釋我想要的。 我的任務是檢查用戶是否在曲線上點擊不是。我希望解決沒有符號的任務。 – Dmitry

+0

什麼曲線?情節線或其他東西? –