0

我是 iPhone 开发的新手。

目前我正在制作着色应用程序。

我正在使用苹果的绘画应用程序作为参考来创建我的应用程序。

我成功创建了应用程序,您可以在其中使用给定的纹理图像在屏幕上着色

我所做的是我创建了一个自定义 UIView,它扩展了 opengl,我检测到它的触摸并相应地绘制。我还保留了包含轮廓图像的背景 UIImageView,因此感觉就像您在该图像上方绘图。

一切正常,但我想在黑色边缘填充颜色

就像图像有四个有黑色边缘的正方形并且该正方形内部是空白的,如果我触摸任何正方形,它应该用选定的颜色填充该正方形(主要是我正在处理不规则形状)

谁能告诉我如何在那个正方形内填充颜色

洪水填充算法看起来很慢,因为我有一些大图像需要时间来填充颜色

那么有什么简单的方法可以填充颜色吗

示例代码将非常有帮助,因为我是 iPhone Dev 的新手

4

1 回答 1

1

我在最近的项目中实现了这种功能。不同之处在于:我只在边框中填充颜色。

检查我的代码在这里,它可能对你有帮助

    // apply color to only border & return an image
+ (UIImage *)imageNamed:(NSString *)name withColor:(UIColor *)color
{
    // load the image
    UIImage *img = [UIImage imageNamed:name];

    // begin a new image context, to draw our colored image onto
    UIGraphicsBeginImageContext(img.size);

    // get a reference to that context we created
    CGContextRef context = UIGraphicsGetCurrentContext();

    // set the fill color
    [color setFill];

    // translate/flip the graphics context (for transforming from CG* coords to UI* coords
    CGContextTranslateCTM(context, 0, img.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    // set the blend mode to color burn, and the original image
    CGContextSetBlendMode(context, kCGBlendModeColorBurn);
    CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);
    CGContextDrawImage(context, rect, img.CGImage);

    // set a mask that matches the shape of the image, then draw (color burn) a colored rectangle
    CGContextClipToMask(context, rect, img.CGImage);
    CGContextAddRect(context, rect);
    CGContextDrawPath(context,kCGPathFill);

    // generate a new UIImage from the graphics context we drew onto
    UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    //return the color-burned image
    return coloredImg;
}

享受编程!

于 2013-07-19T05:13:33.063 回答