2014-01-29 76 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