好吧,快吓坏了……
制作绘图应用程序:
主视图(按钮、广告等)
然后是占据屏幕一部分的容器 View (带有自定义绘图类)
当用户单击主视图中的按钮时,它会触发容器 View 中的事件(可能是更好的方法,但我找不到)
当用户按下容器内的某个位置时,它会记录该点,添加一条线,然后更新 draw:rect 方法:
- (void)drawRectCGRect)rect
{
[incImage drawInRect:rect];
[path stroke];
}
(当用户绘制时,UIImage('incImage')被添加到它上面,它被绘制到 View 上)
绘图代码:
- (void)drawBitmap
{
UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0.0);
[[UIColor colorWithRed:_brushR green:_brushG blue:_brushB alpha:_brushO] setStroke];
[incImage drawAtPoint:CGPointZero];
[path stroke];
incImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
但是我无法清除 View !
我尝试将 draw:Rect 方法分成 2 个部分(如果 clear 为真,如果不是)并这样做:
UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0.0);
rectpath = [UIBezierPath bezierPathWithRect:CGRectMake(0,0,incImage.size.width,incImage.size.height)];
[[UIColor whiteColor] setFill];
[rectpath fill];
[incImage drawAtPoint:CGPointZero];
incImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
_clear=true;
[self setNeedsDisplay];
然后将 draw:Rect 更改为:
- (void)drawRectCGRect)rect
{
if (clear) {
[incImage drawInRect:rect];
[rectpath fill];
}
else {
[incImage drawInRect:rect];
[path stroke];
}
}
但它不起作用(我也尝试创建一个 CGRect 然后用白色填充它并制作图像并尝试将该图像绘制到 View 但没有运气)。我也检查过,问题不是主视图从容器 View 通信和调用方法,我试图解决这个问题的方式或我的绘制方法有问题。
任何帮助将不胜感激,我的 Mac 的生命可能取决于它
Best Answer-推荐答案 strong>
像这样创建函数:
-(void) clearDrawing {
incImage = nil;
[self setNeedsDisplay];
}
会删除incImage,所以-(void)drawRect 中不再显示。如果你想再次显示一些东西,你可以调用 -(void)drawBitmap 它将执行这个: incImage = UIGraphicsGetImageFromCurrentImageContext(); 并且 incImage 将重新创建一些绘图。
关于ios - 从 UIImage 清除 UIView 绘图,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/21141823/
|