1

我继承UIView,我覆盖-drawRect:,我画一个图CGContext。现在我想用 填充这个数字UIImage。知道怎么做吗?

编辑:

我的代码来自-drawRect:

CGContextBeginPath(ctx);
//here I draw my figure
CGContextClosePath(ctx);
CGContextClip(ctx);

//this doesn't work
UIImage * image = [UIImage imageNamed:@"blackbackground.jgp"];
[image drawInRect:rect];

//this neither
CGImageRef cgImage = image.CGImage;
CGContextDrawImage(ctx, rect,  cgImage);
4

3 回答 3

2

将图像绘制到的正确方法 CGContext 是:

UIImage *_originalImage = // your image

UIGraphicsBeginImageContext(_originalImage.size);
CGContextRef _context = UIGraphicsGetCurrentContext(); // here you don't need this reference for the context but if you want to use in the future for drawing anything else on the context you could get it for it
[_originalImage drawInRect:CGRectMake(0.f, 0.f, _originalImage.size.width, _originalImage.size.height)];

UIImage *_newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
于 2012-07-18T08:46:28.300 回答
0

假设您的意思是要在图形“内部”绘制图像,最简单的方法是创建图形的 cgpath,确保路径已关闭,然后 CGContextClipToPath( context, path)

添加

我刚刚测试了您的代码,正如彼得所说,它应该可以工作。我建议测试您的路径(设置笔触颜色和笔触路径),并尝试不使用蒙版的图像来找出问题所在。

于 2012-07-17T12:21:07.957 回答
0

您需要的是使用图形路径剪辑上下文,然后绘制图像。看看这个答案,它解释了如何做第一部分如何向 UILabel 的文本添加渐变,而不是背景?一旦你剪辑了上下文,只需获取 UIImage 并调用其中一个绘图函数,例如 drawInRect ...

于 2012-07-17T13:42:19.233 回答