1

散乱グラフのプロット シンボルに画像を表示する必要があります。現在、CPTPlotSymbol を使用してグラフにシンボルをプロットしています。しかし、それで取得できるのは、事前定義されたオブジェクトだけです。例えば。ellipsePlotSymbol、dashPlotSymbol、trianglePlotSymbol。

しかし、代わりに画像をプロットする必要があります。

これを達成するのを手伝ってくれませんか。どうもありがとう。

ここに画像の説明を入力

4

3 に答える 3

4

少し試した後、答えを得ました。

まず、カスタム 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;        
}

コーディングを楽しんでください.... :)

于 2012-07-07T07:45:35.347 に答える
3

datasourceメソッドを使用し-symbolForScatterPlot:recordIndex:て、強調表示されたポイントに別の記号を返します。画像付きの標準的な長方形のシンボルは、fillあなたが望むことをします。

于 2012-07-06T23:39:49.740 に答える
1

これを達成する方法は 2 つあります。1 つ目は、デフォルトのシンボルの 1 つを使用してから、データを繰り返し処理し、各ポイントに画像を含む CPTLayer を使用して CPTPlotSpaceAnnotation を追加することです。もう 1 つの方法は、CPTPlotSymbol のサブクラスを作成し、renderAsVectorInContext をオーバーライドして画像を描画することです。

私が知らないこれを行う直接的な方法があるかもしれません。

于 2012-07-06T12:51:39.540 に答える