कोर ग्राफिक्स का उपयोग करके, मैं एक रेखा खींचने की कोशिश कर रहा हूं, जब मैं छाया जोड़ने की कोशिश करता हूं तो लाइन के अंदर लिन और बुलबुले बनाता है, छवि देखें, मैं नहीं हूं इस मुद्दे को हल करने में सक्षम। कृपयासमस्या: बुलबुले दिखाए गए हैं
-(void)drawRect:(CGRect)rect
{
[curImage drawAtPoint:CGPointMake(0, 0)];
CGPoint mid1 = midPoint(previousPoint1, previousPoint2);
CGPoint mid2 = midPoint(currentPoint, previousPoint1);
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);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor);
CGContextSetShadow(context, CGSizeMake(-16.00, -5.0f), 5.0f);
CGContextStrokePath(context);
[super drawRect:rect];
[curImage release];
}
नीचे touchesMoved
विधि नीचे मेरा कोड पाएं।
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
previousPoint2 = previousPoint1;
previousPoint1 = [touch previousLocationInView:self];
currentPoint = [touch locationInView:self];
// calculate mid point
CGPoint mid1 = midPoint(previousPoint1, previousPoint2);
CGPoint mid2 = midPoint(currentPoint, previousPoint1);
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, mid1.x, mid1.y);
CGPathAddQuadCurveToPoint(path, NULL, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y);
CGRect bounds = CGPathGetBoundingBox(path);
CGPathRelease(path);
CGRect drawBox = bounds;
//Pad our values so the bounding box respects our line width
drawBox.origin.x -= self.lineWidth * 2;
drawBox.origin.y -= self.lineWidth * 2;
drawBox.size.width += self.lineWidth * 4;
drawBox.size.height += self.lineWidth * 4;
UIGraphicsBeginImageContext(drawBox.size);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
curImage = UIGraphicsGetImageFromCurrentImageContext();
[curImage retain];
UIGraphicsEndImageContext();
[self setNeedsDisplayInRect:drawBox];
}
CGPoint midPoint(CGPoint p1, CGPoint p2)
{
return CGPointMake((p1.x + p2.x) * 0.5, (p1.y + p2.y) * 0.5);
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
previousPoint1 = [touch previousLocationInView:self];
previousPoint2 = [touch previousLocationInView:self];
currentPoint = [touch locationInView:self];
[self touchesMoved:touches withEvent:event];
}
यहाँ मुद्दा आता है जब मैं पहले से लाइन
CGContextSetShadow(context, CGSizeMake(-16.00, -5.0f), 5.0f);
कृपया मुझे इस मुद्दे से मदद बाहर, धन्यवाद जोड़ने के लिए प्रयास करें। विधियों के साथ संपादन प्रश्न देखें।
सहायता के लिए धन्यवाद, लेकिन मैं बिल्कुल आपकी बात नहीं कर पा रहा हूं। क्योंकि यह मेरे लिए बिल्कुल नया विषय है। –
पर्याप्त मेला। चूंकि उपयोगकर्ता अपनी उंगली को समग्र स्ट्रोक बना देता है, इसलिए अंक की एक श्रृंखला दर्ज की जाती है (प्रत्येक रन लूप चक्र)। आप स्पष्ट रूप से केवल अपने नए 'UIImage' में रिकॉर्ड करने के लिए पिछले और वर्तमान बिंदु को रिकॉर्ड करते हैं। इसके बजाय, 'स्पर्शों के बीच उत्पन्न सभी बिंदुओं को समेकित करें: साथ:' संदेश और 'स्पर्श करें: साथ: साथ:' संदेश, उन्हें पथ (या तो एक CGPath या UIBezierPath) में कनवर्ट करें ** ** ** उपयोगकर्ता ने अपनी उंगली उठाई है ('स्पर्श किया गया: साथ:'), और अपने नए 'UIImage' पर पूर्ण स्ट्रोक प्रतिबद्ध करें। पारदर्शिता परतों के बारे में @ relikd की टिप्पणियां भी अच्छी है। – gschandler
कोड सहायता के लिए धन्यवाद, आपका कोड उचित है लेकिन यह टच एंड पर ड्रॉइंग बनाएगा, और मुझे उंगली के उपयोगकर्ता के आंदोलन के साथ रेखा खींचनी होगी, इसलिए मैं कोड डेन को बदलने की कोशिश कर रहा हूं, आपको बताएं कि क्या है परिणाम। –