iPhone:改变的图像使用石英2D
-
06-07-2019 - |
题
我试图用一些变革对图像的使用CGContextRef.我使用CGContextTranslateCTM,CGContextScaleCTM和CGContextRotateCTM的功能,但是保持简单的事情让我们重点只是第一次。我想知道为什么以下代码产生完全的原始图像?!我失去了一些东西?
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef g = CGBitmapContextCreate((void*) pixelData,
width,
height,
RGBA_8_BIT,
bytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedLast);
CGContextSetShouldAntialias(g, YES);
CGContextSetInterpolationQuality(g, kCGInterpolationHigh);
CGContextTranslateCTM( g,translateX, translateY );
CGImageRef tempImg = CGBitmapContextCreateImage (g);
CGContextDrawImage( g, CGRectMake (0, 0, width, height), tempImg );
CGContextRelease(g);
CGColorSpaceRelease( colorSpace );
此外,在翻译,如何绘制的另一个像这一个,但有部分透明度(例如alpha=0.5).
我搜索了很多,但没有找到答案的,任何帮助是理解...:)
请注意,我建立的上下文从pixelData,tempImg之后创建的翻译。没有什么错误的,在初始化,作为原始图像正在被目前生产的,但问题是翻译我想..
解决方案
转换到图形态仅影响到随后的绘图操作-他们不要更改现有的图像数据。如果你想要应用转变的图像,尝试这样的事情:
- 创建一个空CGContext(在iPhone,使用UIGraphicsBeginImageContext)
- 翻译的规模,或旋转它的形状态
- 绘制现有的图像进入它。
- 获得的图像从新CGContext(在iPhone,使用UIGraphicsGetImageFromCurrentImagecontext)
当你执行步骤3,现有的图像绘制入新的图形方面的变革应用。这里的诀窍是,为了适用的转变,我们实际上画的东西。
你可以做一些非常酷的事情转变的这种方式。你可以画你一半的图像,适用于一些转变,以及绘制更多一些。
其他提示
您必须在绘制图像后调用CGBitmapContextCreateImage()。
然后,您可以在第一个图像的顶部绘制另一个图像并再次调用CGBitmapContextCreateImage()以获取第二个图像。您可以使用CGContextSetAlpha(ctx,alphaValue);
设置alpha不隶属于 StackOverflow