我试图画一条粗线,一条正常的直线在我的应用中看起来很奇怪。我正在使用有趣的字体等,但是直线不起作用。
当我说粗糙时,我的意思是我想给它添加一些噪音或纹理。
我尝试将图像添加为纹理,但是尝试使用的选项使用统一的平铺方法,听起来似乎在几何学上太合理了。
我需要添加散射效果以大致以直线形状绘制纹理图像,或者需要某种随机方法来添加噪点。
我知道我可以在成像应用程序中画出一条粗线,然后使用它,但是我不确定现阶段的颜色和尺寸,我宁愿使用动态的东西。
我在这个问题上花费了太长的时间,如果花费大量时间搜索并且找不到我可以使用的任何东西,则花费了很多,因此,如果您有解决方案,请提供或指出一些示例代码。
谢谢。
这是我找到的最好的解决方案,但是太统一了...
#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
最佳答案
不能完全回答您的问题,但是您可以在绘画包中绘制线条并将其包含在您的应用程序中,然后使用类似这样的代码来设置线条的颜色。
https://coffeeshopped.com/2010/09/iphone-how-to-dynamically-color-a-uiimage
如果您要使用Sprite Kit,则更改图像颜色变得容易得多
[SKAction colorizeWithColor:[self randomColor]
colorBlendFactor:1.0
duration:0]];