Je pense que quelque chose comme cela fonctionnera:
CGContextSaveGState(c);
CGContextAddPath(c, path);
CGContextClip(c)
// make a gradient
CGColorRef colors[] = { topColor, bottomColor };
CFArrayRef colorsArr = CFArrayCreate(NULL, (const void**)colors, sizeof(colors)/sizeof(CGColorRef), &kCFTypeArrayCallBacks);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, colorsArr, NULL);
CFRelease(colorSpace);
CFRelease(colorsArr);
// Draw a linear gradient from top to bottom
CGPoint start = ...
CGPoint end = ...
CGContextDrawLinearGradient(c, gradient, start, end, 0);
CFRelease(gradient);
CGContextRestoreGState(c);
Thx beaucoup Todd! J'ai déjà eu le même code, mais j'ai oublié le CGContextClip après le CGContextAddPath .... – catlan
J'essaie de comprendre ce code mais "couleurs" est déclaré deux fois avec des types différents. Je ne suis pas sûr de savoir lequel était utilisé dans les appels subséquents. – progrmr
progrmr, sa typo, devrait être: CGColorRef colorRef [] = {topColor, bottomColor}; CFArrayRef colors = CFArrayCreate (NULL, (const vide **) colorRef, sizeof (colorRef)/sizeof (CGColorRef), & kCFTypeArrayCallBacks); – digdog