gpt4 book ai didi

ios - 在 iOS 中为复杂图像着色

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:08 29 4
gpt4 key购买 nike

我正在尝试使用 iOS 中的 Objective C 为下图着色。 enter image description here

我想根据高度给图像上色。例如,前 10 个像素为红色,接下来的 20 个像素为蓝色,接下来的 20 个像素为绿色。我希望图像像这样着色。

enter image description here

我已经在 Stack overflow 中进行了搜索,但我找不到解决方法。

谢谢

编辑:

我是这样画的

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(context, 0, 300);
CGContextAddLineToPoint(context, 20, 230);
CGContextAddLineToPoint(context, 80, 230);
CGContextAddLineToPoint(context, 120, 150);
CGContextAddLineToPoint(context, 140, 230);
CGContextAddLineToPoint(context, 300, 300);
CGContextClosePath(context);


CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextStrokePath(context);

这是地形图。图中的点将是动态的。所以根据地形的高度,它必须被着色。所以我将无法为各种颜色创建单独的路径,因为我只能获得高度。我没有图中各个颜色路径的任何点信息。

最佳答案

正如您已经被告知的那样,一种方法是将图形形状简单地视为掩码。蒙版意味着您的图形形状在图像中打了一个“洞”。色带可以简单地是图像后面 的三个彩色矩形 View ,很容易在代码中创建。图像后面的三个矩形 View 通过孔显示。

或者,绘制图形形状,然后将图形形状视为剪切路径并绘制三个彩色矩形。

使用第二种方法,我很容易得到这个结果:

enter image description here

这是我使用的代码:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 3);

// your code:
CGContextMoveToPoint(context, 0, 300);
CGContextAddLineToPoint(context, 20, 230);
CGContextAddLineToPoint(context, 80, 230);
CGContextAddLineToPoint(context, 120, 150);
CGContextAddLineToPoint(context, 140, 230);
CGContextAddLineToPoint(context, 300, 300);
CGContextClosePath(context);

CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextStrokePath(context);

// my code starts here - first, draw path again:

CGContextMoveToPoint(context, 0, 300);
CGContextAddLineToPoint(context, 20, 230);
CGContextAddLineToPoint(context, 80, 230);
CGContextAddLineToPoint(context, 120, 150);
CGContextAddLineToPoint(context, 140, 230);
CGContextAddLineToPoint(context, 300, 300);
CGContextClosePath(context);

// clip to that path, and draw the rectangles:
CGContextClip(context);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, CGRectMake(0,250,300,50));
CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
CGContextFillRect(context, CGRectMake(0,200,300,50));
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillRect(context, CGRectMake(0,150,300,50));

关于ios - 在 iOS 中为复杂图像着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951437/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com