我需要在散射图中的绘图符号处显示图像。现在我正在使用 CPTPlotSymbol 在图表上绘制符号。但我能得到的只是预定义的对象。例如。ellipsePlotSymbol、dashPlotSymbol、trianglePlotSymbol。
但我需要改为绘制图像。
你能帮我实现这个目标吗?非常感谢。
尝试了一下后得到了答案。
首先,我构建了一个自定义 CPTLayer,并在其中使用要填充的图像。
CustomImageForScatterPlot.h 文件
#import "CPTLayer.h"
@interface CustomImageForScatterPlot : CPTLayer
{
UIImage *_image;
}
-(id)initWithImage:(UIImage *)image;
@end
CustomImageForScatterPlot.m 文件
#import "CustomImageForScatterPlot.h"
#import "CPTLayer.h"
@implementation CustomImageForScatterPlot
-(void)dealloc{
[_image release];
[super dealloc];
}
-(id)initWithImage:(UIImage *)image{
CGRect f = CGRectMake(0, 0, image.size.width, image.size.height);
if (self = [super initWithFrame:f]) {
_image = [image retain];
}
return self;
}
-(void)drawInContext:(CGContextRef)ctx{
CGContextDrawImage(ctx, self.bounds, _image.CGImage);
}
@end
现在,在散点图图形文件中,我使用以下委托方法返回图像
- (CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
{
CustomImageForScatterPlot* layer = [[CustomImageForScatterPlot alloc] initWithImage:[UIImage imageNamed:@"dots.png"]];
layer.frame = CGRectMake(2, 0, 34, 6);
return layer;
}
享受编码.... :)
使用-symbolForScatterPlot:recordIndex:
数据源方法并为突出显示的点返回不同的符号。带有图像的标准矩形符号fill
将满足您的需求。
我看到了两种不同的方法,第一种是使用一个默认符号,然后遍历您的数据并添加一个 CPTPlotSpaceAnnotation 和一个 CPTLayer,每个点都包含一个图像。另一种方法是创建 CPTPlotSymbol 的子类并覆盖 renderAsVectorInContext 以绘制图像。
可能有一种我不知道的直接方法可以做到这一点。