如何更改UIView或UIImageView中的点的颜色?

时间:2013-02-15 15:09:38

标签: ios cocoa-touch uiview uiimageview uicolor

我正在尝试在UIView中构建我自己的“Flood Fill”实现。一切进展顺利,但我无法弄清楚如何在UIImageView或UIView中更改特定点/像素的颜色。

如何更改UIView中的点或像素的颜色?

修改

这是我的情景:

1-触摸事件:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint loc = [touch locationInView:_image];
    UIColor *mycol=[self getPixelColorAtLocation:loc];
    if (mycondition) {

        _mylayer->point_=loc;
        _mylayer->color_=mycol;
        [_mylayer setNeedsDisplay];

    }
}

在我的自定义UIView

上绘制rect
- (void)drawRect:(CGRect)rect {
    if (point_.x>0) {
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetStrokeColorWithColor(context, color_.CGColor);
        CGContextFillRect(context, CGRectMake(point_.x,point_.y, 1.0, 1.0));
    }
}

我现在的观点是“每当我调用[_mylayer setNeedsDisplay];时,放置的点(新颜色)都会被移除,并且会出现一个新点(仅1点)。

任何想法

2 个答案:

答案 0 :(得分:0)

使用

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

更改点/像素颜色的方法。

答案 1 :(得分:0)

在调用drawRect方法之前,将清除整个上下文。您必须能够随时重新创建所有内容,而不仅仅是一点。如果你是自己的另一个类的子类,不要忘记调用超级实现,以便它可以添加它的绘图贡献。