iOSプログラミング初心者です。フレームごとに画面に画像を表示したい。しかし、私のソースでは、最初のフレームのみが画面に描画され、次のフレームはすべて無視されます。リアルタイムで再表示するにはどうすればよいですか?
ソースを表示している私の画像:
- viewDidLoad :最初の画面の初期
化 - ChangeImage :次の画面の表示を変更します
- setPixelColorR:G:B:X:Y: :画面上のピクセルの色を変更します
<ContentViewController.h>
#import <UIKit/UIKit.h>
@interface ContentViewController : UIViewController {
IBOutlet UIImageView *svContent;
CGContextRef context;
size_t dataSize;
UInt8* initdata;
}
@property(nonatomic,retain) IBOutlet UIImageView *svContent;
-(IBAction)btnPhotosTouched;
- (void) ChangeImage;
- (void) setPixelColorR:(int)red G:(int)green B:(int)blue X:(int)x Y:(int)y;
@end
と
<ContentViewController.m>
#import "ContentViewController.h"
@implementation ContentViewController
@synthesize svContent;
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView;
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
CGFloat width = screenSize.width;
CGFloat height = screenSize.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
size_t bitsPerComponent = 8;
size_t bytesPerPixel = 4;
size_t bytesPerRow = (width * bitsPerComponent * bytesPerPixel + 7) / 8;
dataSize = bytesPerRow * height;
initdata = malloc(sizeof(UInt8) * dataSize);
memset(initdata, 0, dataSize);
context = CGBitmapContextCreate(initdata, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big);
// a drawing for a test.
CGContextSetRGBFillColor (context, 1, 0, 0, 1);
CGContextFillRect (context, CGRectMake (0, 0, 200, 100 ));
CGContextSetRGBFillColor (context, 0, 0, 1, .5);
CGContextFillRect (context, CGRectMake (0, 0, 100, 200));
CGColorSpaceRelease(colorSpace);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *result = [[UIImage imageWithCGImage:imageRef] retain];
CGImageRelease(imageRef);
imageView = [[UIImageView alloc] initWithImage:result];
[svContent addSubview:imageView];
[imageView release];
// [self ChangeImage:initdata];
}
- (void) ChangeImage
{
UIImageView *imageView;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGColorSpaceRelease(colorSpace);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *result = [[UIImage imageWithCGImage:imageRef] retain];
CGImageRelease(imageRef);
imageView = [[UIImageView alloc] initWithImage:result];
[svContent addSubview:imageView];
[imageView release];
NSLog(@"Thread Image Change GO");
[svContent setNeedsDisplay];
[self.view setNeedsDisplay];
[super.view setNeedsDisplay];
}
- (void) setPixelColorR:(int)red G:(int)green B:(int)blue X:(int)x Y:(int)y
{
CGFloat r = (CGFloat)red / 255.0f;
CGFloat g = (CGFloat)green / 255.0f;
CGFloat b = (CGFloat)blue / 255.0f;
CGContextSetRGBFillColor(context, r, g, b, 1);
CGContextFillRect(context, CGRectMake(x, y, 1, 1));
}
.
.
.
@end
ありがとうございました。