2010-12-29 10 views
0

私は何をしているのですか?カレンダー用のコードをダウンロードしました。今はタイルに画像を表示したいのです。CGContextRefの画像を表示

私はそのために私はCGImageRefに画像オブジェクトを変換していますので、タイルの上に画像を表示したいどのような私は他の条件でコード

- (void)drawTextInContext:(CGContextRef)ctx 
{ 
    CGContextSaveGState(ctx); 
    CGFloat width = self.bounds.size.width; 
    CGFloat height = self.bounds.size.height; 

    CGFloat numberFontSize = floorf(0.3f * width); 

CGContextSetFillColorWithColor(ctx, kDarkCharcoalColor); 
CGContextSetTextDrawingMode(ctx, kCGTextClip); 
for (NSInteger i = 0; i < [self.text length]; i++) { 
    NSString *letter = [self.text substringWithRange:NSMakeRange(i, 1)]; 
    CGSize letterSize = [letter sizeWithFont:[UIFont boldSystemFontOfSize:numberFontSize]]; 

    CGContextSaveGState(ctx); // I will need to undo this clip after the letter's gradient has been drawn 
    [letter drawAtPoint:CGPointMake(4.0f+(letterSize.width*i), 0.0f) withFont:[UIFont boldSystemFontOfSize:numberFontSize]]; 

    if ([self.date isToday]) { 
     CGContextSetFillColorWithColor(ctx, kWhiteColor); 
     CGContextFillRect(ctx, self.bounds); 

    } else { 
     // CGContextDrawLinearGradient(ctx, TextFillGradient, CGPointMake(0,0), CGPointMake(0, height/3), kCGGradientDrawsAfterEndLocation); 
     CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename("left-arrow.png"); 
     CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, NO, kCGRenderingIntentDefault); 
     //UIImage* image = [UIImage imageNamed:@"left-arrow.png"]; 
     //CGImageRef imageRef = image.CGImage; 

     CGContextDrawImage(ctx, CGRectMake(8.0f+(letterSize.width*i), 0.0f, 5, 5), image); 
     //im.image=[UIImage imageNamed:@"left-arrow.png"]; 

    } 

    CGContextRestoreGState(ctx); // get rid of the clip for the current letter   
} 

CGContextRestoreGState(ctx); 

}

でショーをしようとしています。

私を助けてください。

これは、同じ方法で行っても、他の方法で行ってもわかりません。これを行う方法を提案してください。

Thanx a lot。

答えて

0

画像のファイルパスに問題があるようです。 NSBundle -methodsで正しいパスを取得できます。また、画像やデータプロバイダを公開しないため、多くのメモリが漏れてしまいます。長い話を短くするために、これを試してみてください。

[[UIImage imageNamed:@"left-arrow.png"] drawInRect:...] 

またはさらに簡単:

[[UIImage imageNamed:@"left-arrow.png"] drawAtPoint:...] 
+0

[OK]をありがとう、これもdrawInRectとdrawAtPointを動作しません。 – Ishu

+0

ボットイメージとデータプロバイダはオートリアーゼオブジェクトです。 – Ishu

+0

いいえ、自動リリースされていません。ドキュメントをもっと慎重に読んでください。ところで、現在のコンテキストではないコンテキストを使用している場合は、プッシュしてからポップする必要があります。 –