Я хотел бы нарисовать картинку bimap на платформе IOS на основе набора данных RGB, но у меня возникли некоторые проблемы при обращении к этому официальному веб-сайту: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-TPXREF101
Самая большая проблема здесь для меня заключается в том, что в этом руководстве нарисовано растровое изображение на MAC OS , а не на IOS .
Итак, я добавил подпредставление в представление и намеревалось нарисовать растровое изображение в подпредставлении.
UIImageView *imgview = [[UIImageView alloc] initWithFrame:CGRectMake(15, 355, 384, 288)];
[self drawBitmap:384 andPixelshigh:288];
[self.view addSubview:imgview];
Функция drawBitmap представляет собой самописную функцию, используемую для рисования растрового изображения после урока.
- (void)drawBitmap:(NSInteger)pixelsWide andPixelshigh: (NSInteger)pixelsHigh{
CGRect myBoundingBox;
CGContextRef myBitmapContext;
CGImageRef myImage;
myBoundingBox = CGRectMake (33, 366, 384, 288);
myBitmapContext = [self MyCreateBitmapContext:pixelsWide andPixelsHigh:pixelsHigh];
CGContextSetRGBFillColor (myBitmapContext, 1, 0, 0, 1);
CGContextFillRect (myBitmapContext, CGRectMake (100, 100, 200, 100 ));
CGContextSetRGBFillColor (myBitmapContext, 0, 0, 1, .5);
CGContextFillRect (myBitmapContext, CGRectMake (100, 100, 100, 200 ));
myImage = CGBitmapContextCreateImage (myBitmapContext);
CGContextDrawImage(myBitmapContext, myBoundingBox, myImage);
char *bitmapData = CGBitmapContextGetData(myBitmapContext);
CGContextRelease (myBitmapContext);
if (bitmapData)
free(bitmapData);
CGImageRelease(myImage);
}
и myBitmapContext - это контекст растрового изображения, созданного следующей функцией.
- (CGContextRef) MyCreateBitmapContext: (NSInteger) pixelsWide andPixelsHigh: (NSInteger) pixelsHigh{
CGContextRef context = NULL;
CGColorSpaceRef colorSpace;
NSInteger * bitmapData;
NSInteger bitmapByteCount;
NSInteger bitmapBytesPerRow;
bitmapBytesPerRow = (pixelsWide * 4);
bitmapByteCount = (bitmapBytesPerRow * pixelsHigh);
colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
bitmapData = (NSInteger *)calloc( bitmapByteCount, sizeof(uint8_t) );
if (bitmapData == NULL)
{
return NULL;
}
context = CGBitmapContextCreate (bitmapData,
pixelsWide,
pixelsHigh,
8,
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedLast);
if (context== NULL)
{
free (bitmapData);
return NULL;
}
CGColorSpaceRelease( colorSpace );
return context;
}
Думаю, в моем коде нет ничего плохого, но я просто не могу нарисовать нужную мне растровую фигуру.