ios - tecnicas - Dibujar en UIView en puntos de contacto da un efecto de dibujo borroso en los límites
fondos para dibujos a lapiz (2)
Para resolver mi último problema: Dibujar / pintar como color de boceto dentro de una ruta bezier en UIView , tomé una imagen exacta (de ruta) llena con el color seleccionado. Luego, para dibujar eso en UIView
, UIView
color de contexto:
lineColor=[UIColor colorWithPatternImage:img];
en 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);
Se dibuja exactamente en el camino de la vista, pero en los límites, el color se apaga como efecto de fusión.
Fuente Imagen en la cual el color debe ser llenado:
imagen que se utilizará como colorWithPatternImage (img)
Después de dibujar en toques, resultimg Imagen:
¿Qué me falta aquí para llenarlo perfectamente? ¡Cualquier ayuda con gráficos centrales es bienvenida! ¡Gracias!
Para enmascarar la imagen también lo hice:
-(void)clipView :(MyUIBezierPath*)path drawingView:(DrawingView*)myView
{
MyUIBezierPath *myClippingPath =path;
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = myClippingPath.CGPath;
myView.layer.mask = mask;
}
Pero colorWithPatternImage y este enmascaramiento hacen el mismo truco, es decir, me permite dibujar solo dentro de la ruta, el problema al que me enfrento ahora es: ¡da un mal efecto al dibujar puntos de contacto alrededor de los límites del camino!
Puede crear puntos de ruta de esta imagen. Luego CGPathRef
un CGPathRef
o CGMutablePathRef
y luego CGMutablePathRef
como una máscara para tu CGContextRef
.
Bueno, está trabajando con mi propio método de enmascaramiento a través de colorWithPatternImage, aunque enmascararlo mediante clipping es lo mismo. El problema del dibujo se debía a que la imagen se dibujaba en el punto de contacto en el método "calculateMinImageArea: CGPoint1: CGPoint2: CGPoint3". Cambiar sus dimensiones (alto-ancho según el ancho de línea) lo ordena.