【问题标题】:IoS Cocoa fill area with given color具有给定颜色的 IoS Cocoa 填充区域
【发布时间】:2012-04-04 16:32:18
【问题描述】:

我尝试为位图的给定区域着色。在屏幕上显示后。 目前我使用以下方法: 有表示位图CGContextRef 和二维位数组——通过它们我们知道要为哪个像素着色。然后一个循环抛出这个数组并绘制一个椭圆:

for(int i = 0; i < width; i++){
    for(int j = 0; j < height; j++){
        if(colormask[i][j] == 1){
            CGRect circleRect = CGRectMake(i, j, 1, 1);
            CGContextSetRGBFillColor(bitmap, red, green, blue, 1.0);
            CGContextFillEllipseInRect(bitmap, circleRect);
        }
    }
 }

这解决了问题,但运行速度太慢。请提供任何其他想法。也许有使用 Quartz 的解决方案?

【问题讨论】:

  • 我可以知道你想要哪个图像颜色。只需在此处标记一个简单的图像并告诉您想要颜色的部分..以便我们可以帮助您..
  • 这是任何黑白图像,例如在儿童涂色书中。然后我想给它的某个域上色。

标签: ios cocoa uikit quartz-graphics appkit


【解决方案1】:

您可以使用Flood fill Algorithm 为图像着色,这将非常快速和高效。 Objective-c 版本的洪水填充算法是Here

【讨论】:

  • 是的,我已经实现了这个算法。我通过您的链接创建了如何为域着色的好主意-我只需要设置适当的位图数据字节,如下所示:code int byteIndex = (bytesPerRow * y) + x * bytesPerRow/width; rawData[byteIndex] = 红色; rawData[byteIndex+1] = 蓝色; rawData[byteIndex+2] = 绿色; code 这真的很快!所以我的问题解决了。谢谢你。 :)
  • 我可以在任何地方找到其实现的基本示例吗?或逐步将其包含在您的项目中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2011-10-29
相关资源
最近更新 更多