我正在使用CGLayers及其混合模式常量,如kCGBlendModeDifference,kCGBlendModeHardLight,kCGBlendModeLuminosity等。
我想用这些常量构建一个数组,并在索引中使用它们,如
CGContextSetBlendMode(context, [myArrayOfBlendModes objectAtIndex:x]);
但我有两个问题:
1)Objective-C不允许使用
构建数组NSMutableArray * myArrayOfBlendModes = [[[NSMutableArray alloc] initWithObjects:
kCGBlendModeDifference,
kCGBlendModeHardLight,
kCGBlendModeLuminosity,
nil] autorelease];
因为这些常量不是对象。为了使事情变得更糟,这些常量返回CGBlend值......
所以,第一点是如何制作一个CGBlends数组......
2)如果可以的话,
[myArrayOfBlendModes objectAtIndex:x]
返回可在
上使用的有效值CGContextSetBlendMode(context, [myArrayOfBlendModes objectAtIndex:x]);
???
这里还有另一个问题..一个用作C例程参数的Objective-c代码......是否可能?
这是我试图解决几个小时的两个难题......
感谢您的帮助
答案 0 :(得分:3)
据我所知,这些常数是整数。如果您真的想要这种功能,可以执行以下操作:
CGBlendMode模式[] = {kCGBlendModeDifference, kCGBlendModeHardLight, kCGBlendModeDifference};
或者,如果你真的想要使用NSArray,你可以把它们放到NSNumber中......
NSNumber * luminous = [NSNumber numberWithInt:kCGBlendModeDifference], *差异= [NSNumber numberWithInt:kCGBlendModeDifference],* hardLight = [NSNumber numberWithInt: kCGBlendModeHardLight];
NSMutableArray * myArrayOfBlendModes =
[[[NSMutableArray alloc] initWithObjects: 区别, 强光, 夜光, nil] autorelease];
CGContextSetBlendMode(context, [[myArrayOfBlendModes objectAtIndex:x]
的intValue]);
答案 1 :(得分:0)
是的,您可以使用obj-c调用来提供c函数。 Objective C和C是相同的舞蹈 - Objective C只是C的超集。它将运行该方法并将结果发送回c函数调用没有问题。