在 UIView 中绘制触摸点会在边界上产生模糊的绘制效果
Drawing in UIView on touch points gives blurr drawing effect on boundaries
为了解决我的最后一个问题:,我拍了一张用选定颜色填充的(路径)精确图像。然后,为了在 UIView
中绘制它,我采用了上下文颜色:
lineColor=[UIColor colorWithPatternImage:img];
在 drawrect 中:
CGPoint mid1 = midPoint(previousPoint1, previousPoint2);
CGPoint mid2 = midPoint(currentPoint, previousPoint1);
[curImage drawInRect:CGRectZero];
CGContextRef context = UIGraphicsGetCurrentContext();
[self.layer renderInContext:context];
CGContextMoveToPoint(context, mid1.x, mid1.y);
CGContextAddQuadCurveToPoint(context,
previousPoint1.x,
previousPoint1.y,
mid2.x,
mid2.y);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context,lineColor.CGColor);
CGContextSetShouldAntialias(context, YES);
CGContextSetAllowsAntialiasing(context, YES);
CGContextSetFlatness(context,0.5);
CGContextSetAlpha(context, 1.0);
CGContextStrokePath(context);
它准确地绘制在视线中,但在边界处颜色像融化效果一样消失。
必须填充颜色的源图像:
用作 colorWithPatternImage (img) 的图像
触摸绘制后,结果图像:
我在这里缺少什么来完美地填充它?
欢迎任何有关核心图形的帮助!
谢谢!
为了屏蔽图像我也这样做了:
-(void)clipView :(MyUIBezierPath*)path drawingView:(DrawingView*)myView
{
MyUIBezierPath *myClippingPath =path;
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;
myView.layer.mask = mask;
}
但是 colorWithPatternImage 和这个掩码有同样的技巧,即让我只在路径内部绘制,我现在面临的问题是:它对在路径边界周围的触摸点上绘制产生不好的影响!
您可以以此图像为起点创建路径。然后做一个 CGPathRef
或 CGMutablePathRef
然后用它作为你的 CGContextRef
.
的掩码
它通过 colorWithPatternImage 使用我自己的遮罩方法,虽然通过裁剪遮罩它是相同的 thing.Drawing 问题是因为图像是在方法 "calculateMinImageArea: CGPoint1 :CGPoint2 :CGPoint3" 的触摸点绘制的。改变它的尺寸(高宽根据线宽)将它整理出来。
为了解决我的最后一个问题:UIView
中绘制它,我采用了上下文颜色:
lineColor=[UIColor colorWithPatternImage:img];
在 drawrect 中:
CGPoint mid1 = midPoint(previousPoint1, previousPoint2);
CGPoint mid2 = midPoint(currentPoint, previousPoint1);
[curImage drawInRect:CGRectZero];
CGContextRef context = UIGraphicsGetCurrentContext();
[self.layer renderInContext:context];
CGContextMoveToPoint(context, mid1.x, mid1.y);
CGContextAddQuadCurveToPoint(context,
previousPoint1.x,
previousPoint1.y,
mid2.x,
mid2.y);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context,lineColor.CGColor);
CGContextSetShouldAntialias(context, YES);
CGContextSetAllowsAntialiasing(context, YES);
CGContextSetFlatness(context,0.5);
CGContextSetAlpha(context, 1.0);
CGContextStrokePath(context);
它准确地绘制在视线中,但在边界处颜色像融化效果一样消失。
必须填充颜色的源图像:
用作 colorWithPatternImage (img) 的图像
触摸绘制后,结果图像:
我在这里缺少什么来完美地填充它? 欢迎任何有关核心图形的帮助! 谢谢!
为了屏蔽图像我也这样做了:
-(void)clipView :(MyUIBezierPath*)path drawingView:(DrawingView*)myView
{
MyUIBezierPath *myClippingPath =path;
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;
myView.layer.mask = mask;
}
但是 colorWithPatternImage 和这个掩码有同样的技巧,即让我只在路径内部绘制,我现在面临的问题是:它对在路径边界周围的触摸点上绘制产生不好的影响!
您可以以此图像为起点创建路径。然后做一个 CGPathRef
或 CGMutablePathRef
然后用它作为你的 CGContextRef
.
它通过 colorWithPatternImage 使用我自己的遮罩方法,虽然通过裁剪遮罩它是相同的 thing.Drawing 问题是因为图像是在方法 "calculateMinImageArea: CGPoint1 :CGPoint2 :CGPoint3" 的触摸点绘制的。改变它的尺寸(高宽根据线宽)将它整理出来。