我在IOS中使用绘图应用程序时遇到了一些麻烦。我在一些教程的帮助下创建了自由手绘图。但我发现擦除图纸有些困难。在我的应用程序中,我有橡皮擦按钮作为背景图像。单击橡皮擦按钮后,当我在绘图上滑动时,无论我在哪里滑动,它都会擦除绘图。任何人都可以帮我这样做。 提前谢谢。
以下是我的代码:
@implementation LinearInterpView
{
UIBezierPath *path;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
if(self = [super initWithCoder:aDecoder]) {
[self setMultipleTouchEnabled:YES];
[self setBackgroundColor:[UIColor whiteColor]];
path=[UIBezierPath bezierPath];
[path setLineWidth:2.0];
}
return self;
}
-(void)drawRect:(CGRect)rect{
[[UIColor blackColor] setStroke];
[path stroke];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=[touches anyObject];
CGPoint p=[touch locationInView:self];
[path moveToPoint:p];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=[touches anyObject];
CGPoint p=[touch locationInView:self];
[path addLineToPoint:p];
[self setNeedsDisplay];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesMoved:touches withEvent:event];
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
[self touchesEnded:touches withEvent:event];
}
// This is the button action to erase the drawing.
- (IBAction)erase:(id)sender {
CGContextRef cgref=UIGraphicsGetCurrentContext();
CGContextSetBlendMode(cgref, kCGBlendModeClear);
}
请清楚我,我做了什么错误。
答案 0 :(得分:1)
因此,通过绘制你的意思是你在屏幕上绘制线条,用某种颜色说明你可以通过设置白色和alpha 1来做同样的事情,以便白线代替现有的彩色线条。一个更好的 tutorial here 。 This 似乎也很重要。
答案 1 :(得分:1)
首先,你的逻辑应该是在ImageView上创建一个图层。
然后你可以在那个图层上绘制然后传递白色来擦除。
它看起来像擦除,你的视图将根据要求看起来像。
这将非常有用。
答案 2 :(得分:1)
尝试使用此方法擦除iOS中的绘图:
- (IBAction)eraserPressed:(id)sender {
red = 255.0/255.0;
green = 255.0/255.0;
blue = 255.0/255.0;
opacity = 1.0;
}
答案 3 :(得分:0)
为什么不在绘图按钮中实现与删除按钮相同的逻辑。只需将橡皮擦中笔划的默认颜色设置为白色或为背景设置颜色。