gpt4 book ai didi

ios - 从 UIImage 清除 UIView 绘图

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:22 26 4
gpt4 key购买 nike

好吧,要吓坏了......

制作绘图应用程序:主视图(按钮、广告等)然后是占据屏幕一部分的容器 View (使用自定义绘图类)当用户在主视图中单击一个按钮时,它会在容器 View 中触发一个事件(可能是一种更好的方法,但我找不到它)

当用户按下容器内的某处时,它会记录该点,添加一条线,然后更新 draw:rect 方法:

- (void)drawRect:(CGRect)rect
{
[incImage drawInRect:rect];
[path stroke];
}

(当用户绘制时,UIImage ('incImage') 被添加到 View 上,并且它被绘制到 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)drawRect:(CGRect)rect
{
if (clear) {
[incImage drawInRect:rect];
[rectpath fill];
}
else {
[incImage drawInRect:rect];
[path stroke];
}
}

但它不起作用(我也尝试创建一个 CGRect,然后用白色填充它并制作图像并尝试将该图像绘制到 View 但没有运气)。我也检查过,问题不在于主视图从容器 View 通信和调用方法,我尝试处理此方法或我的绘制方法的方式有问题。

任何帮助将不胜感激,我的 Mac 的生命可能取决于它:)

最佳答案

像这样创建函数:

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com