我正在尝试在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
- (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点)。
任何想法
答案 0 :(得分:0)
使用
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
更改点/像素颜色的方法。
答案 1 :(得分:0)
在调用drawRect
方法之前,将清除整个上下文。您必须能够随时重新创建所有内容,而不仅仅是一点。如果你是自己的另一个类的子类,不要忘记调用超级实现,以便它可以添加它的绘图贡献。