• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 从 UIImage 清除 UIView 绘图

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:02:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

好吧,快吓坏了……

制作绘图应用程序: 主视图(按钮、广告等) 然后是占据屏幕一部分的容器 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-推荐答案


像这样创建函数:

-(void) clearDrawing {
    incImage = nil;
    [self setNeedsDisplay];
}

会删除incImage,所以-(void)drawRect中不再显示。如果你想再次显示一些东西,你可以调用 -(void)drawBitmap 它将执行这个: incImage = UIGraphicsGetImageFromCurrentImageContext(); 并且 incImage 将重新创建一些绘图。

关于ios - 从 UIImage 清除 UIView 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141823/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap