【发布时间】:2014-05-22 02:52:10
【问题描述】:
我正在尝试画一条粗线,一条普通的直线在我的应用程序中看起来很奇怪。我正在使用有趣的字体等,但直线不起作用。
当我说粗糙时,我的意思是我想给它添加一些噪点或纹理。
我尝试将图像添加为纹理,但我尝试使用的选项使用统一的平铺方法,这在几何学上看起来过于合理。
我需要添加散射效果以将纹理图像大致绘制成线条形状,或者添加某种随机方法来添加噪点。
我知道我可以在图像应用程序中画一条粗线并使用它,但在这个阶段我不确定颜色和大小,我宁愿使用动态的东西。
我在这个问题上花费了太长时间,而且如果时间谷歌搜索并且找不到任何我可以使用的东西,那么如果您有解决方案,请提供或指出一些示例代码。
谢谢。
这是我找到的最好的解决方案,但它太统一了......
#import "DrawTexturedLine.h"
@implementation DrawTexturedLine
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self patternMake2:rect context:context];
}
void pattern2Callback (void *info, CGContextRef context) {
UIImage *image = [UIImage imageNamed:@"particle.png"];
CGImageRef imageRef = [image CGImage];
CGContextDrawImage(context, CGRectMake(0, 0, 50, 25), imageRef);
}
- (void)patternMake2:(CGRect)rect context:(CGContextRef)context
{
static const CGPatternCallbacks callbacks = { 0, &pattern2Callback, NULL };
CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
CGContextSetFillColorSpace(context, patternSpace);
CGColorSpaceRelease(patternSpace);
CGSize patternSize = CGSizeMake(25/2.0, 25);
CGPatternRef pattern = CGPatternCreate(NULL, self.bounds,
CGAffineTransformIdentity, patternSize.width, patternSize.height,
kCGPathFillStroke, true, &callbacks);
CGFloat alpha = 1;
CGContextSetFillPattern(context, pattern, &alpha);
CGPatternRelease(pattern);
CGContextFillRect(context, rect);
//CGContextRestoreGState(context);
}
@end
【问题讨论】:
标签: ios objective-c cocoa-touch core-graphics