У меня есть движок gdi, который приводит к стандартному потоку битов BMP, и теперь я хочу отобразить его с помощью компьютерной графики в iphone, я использую его так:
// size -> image size
// rect -> current view rect
// pBits -> the BITMAPINFO image bits stream
long imgSizePerRow = ((long)(24 * size.width + 31) / 32) * 4;
CGDataProviderRef providerRef = CGDataProviderCreateWithData(NULL, pBits,
imgSizePerRow * size.height, NULL);
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGImageRef imageRef = CGImageCreate(size.width, size.height, 8, 24,
imgSizePerRow, colorSpaceRef,
kCGBitmapByteOrderDefault, providerRef,
NULL, YES, kCGRenderingIntentDefault);
CGContextDrawImage(context, rect, imageRef);
CGImageRelease(imageRef);
CGColorSpaceRelease(colorSpaceRef);
CGDataProviderRelease(providerRef);
внимание: я проверяю соответствие пикселя строки временам 4
Мой gdi генерирует поток битов, в данном случае, формат R8G8B8, без альфа-канала, я использую это для CGDataProviderRef и рисую CGImage на мой взгляд.
Странно, что цвет изображения кажется измененным, но в целом форма выглядит нормально, я сохраняю поток битов с помощью BITMAP FORMAT в файл раньше и делаю контраст, все выглядит нормально, только все цветовое пространство.
МОЖЕТ кто-нибудь сказать мне, где моя ошибка в коде, или я пропущу какой-то пункт. установка?