gpt4 book ai didi

iphone - 多条彩色贝塞尔路径

转载 作者:行者123 更新时间:2023-12-01 16:57:01 25 4
gpt4 key购买 nike

这是我的免费手绘代码。但是当我绘制路径时,以前的路径消失了。我无法弄清楚为什么会这样。有谁能够帮助我。这是我的代码。

- (void)drawRect:(CGRect)rect
{

for (NSMutableDictionary *dictionary in pathArray) {

UIBezierPath *_path = [dict objectForKey:@"Path"];

UIColor *_colors = [dict objectForKey:@"Colors"];

[_colors setStroke];

_path.lineCapStyle = kCGLineCapRound;

[_path stroke];

}

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

isEdited=YES;

myPath=[[UIBezierPath alloc]init];

myPath.lineWidth=lineWidths;

CGPoint touchPoint = [[touches anyObject] locationInView:self];

UITouch *mytouch=[[touches allObjects] objectAtIndex:0];

[myPath moveToPoint:[mytouch locationInView:self]];

[myPath addLineToPoint:CGPointMake(touchPoint.x+1, touchPoint.y+1)];

[dict setObject:myPath forKey:@"Path"];

[dict setObject:brushPattern forKey:@"Colors"];

[pathArray addObject:dict];

[self setNeedsDisplay];


}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

UITouch *mytouch=[[touches allObjects] objectAtIndex:0];

[myPath addLineToPoint:[mytouch locationInView:self]];

[self setNeedsDisplay];

}

最佳答案

您应该创建 myPathdict本地化 touchesBegan:每次它被解雇。放弃他们的类范围定义。

为了更简单(更快)的性能,您仍然可以拥有全类 currentPathcurrentDict用于 touchesMoved: 的 ivars

编辑:代码看起来像这样:

//currentPath declared as an iVar of UIBezierPath* type
//currentDict declared as an iVar of NSMutableDictionary* type


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
isEdited=YES;

UIBezierPath *myPath=[[UIBezierPath alloc]init]; //locally created

myPath.lineWidth=lineWidths;

CGPoint touchPoint = [[touches anyObject] locationInView:self];

UITouch *mytouch=[[touches allObjects] objectAtIndex:0];

[myPath moveToPoint:[mytouch locationInView:self]];

[myPath addLineToPoint:CGPointMake(touchPoint.x+1, touchPoint.y+1)];

NSMutableDictionary *dict=[[NSMutableDictionary alloc]init]; //locally created

[dict setObject:myPath forKey:@"Path"];

[dict setObject:brushPattern forKey:@"Colors"];

[pathArray addObject:dict];

[self setNeedsDisplay];

currentPath = myPath;
currentDict = dict;
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
[currentPath addLineToPoint:[mytouch locationInView:self]];
[self setNeedsDisplay];
}

关于iphone - 多条彩色贝塞尔路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846064/

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