だから私は線を描くことができる基本的な描画アプリをプロセスに持っています. オフスクリーン ビットマップに描画し、そのイメージを で表示しdrawRect
ます。動作しますが、遅すぎて、指で描いてから約 0.5 秒後に更新されます。私はコードを取得し、このチュートリアルhttp://www.youtube.com/watch?v=UfWeMIL-Nu8&feature=relmfuから適応させ ました。コメントでわかるように、人々は遅すぎると言っていますが、男は持っていませんと答えました。
では、どうすれば高速化できますか?またはそれを行うより良い方法はありますか?任意のポインタをいただければ幸いです。
私のコードはこちらDrawView.m
です。
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self=[super initWithCoder:aDecoder])) {
[self setUpBuffer];
}
return self;
}
-(void)setUpBuffer {
CGContextRelease(offscreenBuffer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
offscreenBuffer = CGBitmapContextCreate(NULL, self.bounds.size.width, self.bounds.size.height, 8, self.bounds.size.width*4, colorSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colorSpace);
CGContextTranslateCTM(offscreenBuffer, 0, self.bounds.size.height);
CGContextScaleCTM(offscreenBuffer, 1.0, -1.0);
}
-(void)drawToBuffer:(CGPoint)coordA :(CGPoint)coordB :(UIColor *)penColor :(int)thickness {
CGContextBeginPath(offscreenBuffer);
CGContextMoveToPoint(offscreenBuffer, coordA.x,coordA.y);
CGContextAddLineToPoint(offscreenBuffer, coordB.x,coordB.y);
CGContextSetLineWidth(offscreenBuffer, thickness);
CGContextSetLineCap(offscreenBuffer, kCGLineCapRound);
CGContextSetStrokeColorWithColor(offscreenBuffer, [penColor CGColor]);
CGContextStrokePath(offscreenBuffer);
}
- (void)drawRect:(CGRect)rect {
CGImageRef cgImage = CGBitmapContextCreateImage(offscreenBuffer);
UIImage *image =[[UIImage alloc] initWithCGImage:cgImage];
CGImageRelease(cgImage);
[image drawInRect:self.bounds];
}
シミュレータでは完全に動作しますが、デバイスでは動作しません。これはプロセッサの速度に関係していると思います。
ARCを使用しています。