2014-01-29 39 views
2

當使用CPTScatterPlot時,我可以撥打plotAreaPointOfVisiblePointAtIndex,它給我一個NSPoint的特定索引在圖上。CPTBarPlot字段的區域?

我一直在試圖弄清楚,如果我可以做類似的事情來獲得我的CPTBarPlot的數據點的面積(x,y,寬度和高度),但到目前爲止我還沒有想到它出。

有誰知道任何是我可以得到它?

回答

0

根據@ ErikSkroch的詳細信息,這是我提出的解決方案(當我結束使用私有方法而不是重新編寫數學時,有點冒失)。

// Access to private methods 
@interface CPTBarPlot() 
-(CGFloat)lengthInView:(NSDecimal)decimalLength; 
-(BOOL)barAtRecordIndex:(NSUInteger)idx basePoint:(CGPoint *)basePoint tipPoint:(CGPoint *)tipPoint; 
@end 

NSPoint basePoint, tipPoint; 
if(![barPlot barAtRecordIndex: index 
        basePoint: &basePoint 
         tipPoint: &tipPoint]) return; 

float width = [barPlot lengthInView: barPlot.barWidth]; 
1

如果您已經知道數據索引,則可以從數據源(或其使用的模型數據)中獲取位置,基準和提示值。如果您正在使用barOffset,請調整酒吧位置。使用繪圖空間將數據座標轉換爲條形圖末端的繪圖區域像素座標。如果barWidthsAreInViewCoordinatesYES,則可以使用barWidth作爲條形矩形的像素寬度。如果是NO,則在轉換爲繪製區域座標之前,需要先執行一些數學運算來偏移小節的拐角。如果您需要計算幫助,您可以查看CPTBarPlot implementation

+0

謝謝,這正是我需要的! – Kyle