Uiview UIBezierPath绘制线表示法
我使用UIBezierPath和UIView的Uiview UIBezierPath绘制线表示法,uiview,drawing,representation,uibezierpath,Uiview,Drawing,Representation,Uibezierpath,我使用UIBezierPath和UIView的-touch…方法编写了一个简单的绘图代码。这幅画画得很好,但我有一些不好的经历 当我画得很慢时,效果很好。但我画得越快,线就越尖锐。那么,我怎样才能让“平滑”它们变得不那么急躁(更多点) 当我使用高线宽的setLineWidth时,线条变得非常难看 以下是一幅图,展示了丑陋的实际含义: 为什么它会这样画胖线 编辑:这里有一些代码 我希望有人能帮我解决这些问题。非常感谢,大家好,JulianMmmmh,我不会在这个线程中讨论您的实现的性能问题,但在
-touch…
方法编写了一个简单的绘图代码。这幅画画得很好,但我有一些不好的经历
setLineWidth
时,线条变得非常难看我希望有人能帮我解决这些问题。非常感谢,大家好,JulianMmmmh,我不会在这个线程中讨论您的实现的性能问题,但在基本工作正常后,请看一下UIView中的
setNeedsDisplayInRect:
我认为您基本上是在尝试从阵列中取出最后创建的路径,并在移动过程中用新路径替换它
您应该尝试在数组中放置一个CGMutablePathRef
(看看这里)
基本流程如下所示:
触摸开始
:
CGMutablePathRef
触摸移动
:
CGMutablePathRef
)[自我设置需要显示]
同样,这将是缓慢的,首先,然后你需要优化
CGLayerRef
可以提供帮助setNeedsDisplayInRect
肯定也会的。嗯,我不打算在这个线程中讨论您的实现的性能问题,但在基本工作正常后,请在UIView中查看一下setNeedsDisplayInRect:
我认为您基本上是在尝试从阵列中取出最后创建的路径,并在移动过程中用新路径替换它
您应该尝试在数组中放置一个CGMutablePathRef
(看看这里)
基本流程如下所示:
触摸开始
:
CGMutablePathRef
触摸移动
:
CGMutablePathRef
)[自我设置需要显示]
同样,这将是缓慢的,首先,然后你需要优化
CGLayerRef
可以提供帮助setNeedsDisplayInRect
当然也会。你能分享设置路径的代码吗?我添加了一些代码。我是从内存中写的,所以可能在某个地方拼写错误。你能分享设置路径的代码吗?我添加了一些代码。我是凭记忆写的,所以可能在某个时候拼错了
- (void)drawInRect:(CGRect)rect
{
for(UIBezierPath *path in pathArray) {
[[UIColor blackColor] setStroke];
[path setLineWidth:50.0];
[path stroke];
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
startPoint = [[touches anyObject] locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:startPoint];
[path addLineToPoint:[[touches anyObject] locationInView:self]];
if(isDrawing) {
[pathArray removeLastObject];
}
else {
isDrawing = YES;
}
[pathArray addObject:path];
[path close];
[self setNeedsDisplay];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
isDrawing = NO;
}