【问题标题】:iOS, How to draw a rough line, for fun apps?iOS,如何为有趣的应用画一条粗线?
【发布时间】: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


    【解决方案1】:

    我刚刚回到这个问题,我在这方面花了太多时间,研究各种着色解决方案。最后,我不得不使用油漆包来完成大部分工作。如果我能做得更好的话,我可以在一个油漆包中完成整个事情。

    我最后画了一些线条,用黑色记号笔将它们扫描成灰度然后着色。

    【讨论】:

      【解决方案2】:

      没有完全回答您的问题,但您可以在绘画包中绘制线条并将其包含在您的应用中,然后使用这样的代码来设置线条的颜色。

      https://coffeeshopped.com/2010/09/iphone-how-to-dynamically-color-a-uiimage

      如果您使用 Sprite Kit,更改图像颜色会变得更容易

      [SKAction colorizeWithColor:[self randomColor]
                                   colorBlendFactor:1.0
                                           duration:0]];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 2015-02-10
        • 2016-07-27
        • 1970-01-01
        相关资源
        最近更新 更多