在触摸点上绘制UIView可以在边界上绘制出明显的绘图效果

时间:2015-06-08 12:21:13

标签: ios objective-c uiview core-graphics calayer

为了解决我的上一个问题:Draw/Paint like sketch color inside a bezier path in UIView,我拍摄了一个用所选颜色填充的精确图像(路径)。然后,为了在UIView中绘制,我拍摄了上下文颜色:

lineColor=[UIColor colorWithPatternImage:img];

in 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);

它完全在视野中绘制,但在边界上,颜色像熔化效果一样消失。

必须填充颜色的源图像: Image to be filled with color

要用作colorWithPatternImage(img)enter image description here

的图像

在绘制触摸后,重新映射图像: enter image description here

我在这里错过了什么来完美填补它? 对核心图形的任何帮助都是最受欢迎的! 谢谢!

为掩盖图像我也做了:

-(void)clipView :(MyUIBezierPath*)path drawingView:(DrawingView*)myView
{
    MyUIBezierPath *myClippingPath =path;
    CAShapeLayer *mask = [CAShapeLayer layer];
    mask.path = myClippingPath.CGPath;
    myView.layer.mask = mask;
}

但是colorWithPatternImage和这个掩盖做同样的技巧,即让我只在路径内绘制,我现在面临的问题是:它对绘制路径边界周围的触摸点产生了不良影响!

2 个答案:

答案 0 :(得分:1)

它通过colorWithPatternImage使用我自己的掩蔽方法,虽然通过剪切掩盖它是一回事。绘制问题是因为图像是在方法“calculateMinImageArea:CGPoint1:CGPoint2:CGPoint3”中的触摸点绘制的。更改其尺寸(根据线宽的高度宽度)对其进行排序。

答案 1 :(得分:0)

您可以创建此图像的路径点。然后制作CGPathRefCGMutablePathRef,然后将其用作CGContextRef的掩码。