7 core-graphics objective-c calayer uiview ios
为了解决我的最后一个问题:在UIView的Bezier路径中绘制/绘制草图颜色,我拍摄了一个精确的图像(路径)填充了所选颜色.然后,为了绘制它UIView,我采取的上下文颜色:
lineColor=[UIColor colorWithPatternImage:img];
Run Code Online (Sandbox Code Playgroud)
直截了当:
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);
Run Code Online (Sandbox Code Playgroud)
它完全在视野中绘制,但在边界上,颜色像熔化效果一样消失.
必须填充颜色的源图像:

要用作colorWithPatternImage(img)的图像
在绘制触摸后,重新映射图像:

我在这里错过了什么来完美填补它?对核心图形的任何帮助都是最受欢迎的!谢谢!
为了掩盖图像我也做了:
-(void)clipView :(MyUIBezierPath*)path drawingView:(DrawingView*)myView
{
MyUIBezierPath *myClippingPath =path;
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;
myView.layer.mask = mask;
}
Run Code Online (Sandbox Code Playgroud)
但是colorWithPatternImage和这个遮蔽做同样的技巧,即让我只在路径内绘制,我现在面临的问题是:它对绘制路径边界周围的触摸点产生了不良影响!
小智 1
好吧,它通过 colorWithPatternImage 使用我自己的遮罩方法,尽管通过剪切遮罩它是同一件事。绘图问题是因为图像是在方法“calculateMinImageArea: CGPoint1 :CGPoint2 :CGPoint3”中在触摸点处绘制的。改变它的尺寸(根据线宽的高度-宽度)可以解决它。
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |