दिलचस्प पोस्ट
जावा कूड़ा संग्रह लॉग संदेश क्यों rbindlist rbind की तुलना में "बेहतर" है? जावा स्विंग पृष्ठभूमि छवि C99 'प्रतिबंधित' कीवर्ड का यथार्थवादी उपयोग? क्लाइंट साइड में जावास्क्रिप्ट कैसे लिखने के लिए समय में `ठंडे हुए 'प्रतिक्रिया प्राप्त करना और पार्स करना है? वस्तु संपत्ति पर आधारित सरणी तत्व निकालें विस्तारित तरीकों को केवल गैर-नेस्टेड, गैर-सामान्य स्थैतिक वर्ग में क्यों स्वीकार्य है? JQuery में माउस पहिया ईवेंट प्राप्त करें? सी # में सभी खुली खिड़कियां कम करना कन्स्ट्रक्टर या संपत्ति सेटर्स के माध्यम से निर्भरता इंजेक्शन? ड्रॉपवाइजर कस्टम लॉगर्स को फ़ाइल में लॉग इन नहीं करता है पहले तीन स्तंभों को प्रिंट करें समानता के लिए छवियों की तुलना करने के लिए सरल और तेज़ तरीका कैसे जावास्क्रिप्ट का उपयोग कर Ctrl + V, Ctrl + C का पता लगा सकता है? KeyListener कुंजी संयोजन कैसे खोज सकते हैं (जैसे, ALT + 1 + 1)

कैसे एक ढाल के साथ एक UIBezierPath भरने के लिए?

मैंने एक UIBezierPath का उपयोग करके एक ग्राफ खींचा है I मैं एक ठोस रंग के साथ ग्राफ़ के नीचे क्षेत्र को भर सकता हूं, लेकिन मैं एक ग्राउंड के नीचे क्षेत्र को एक रंग के बजाय ढाल के साथ भरना चाहता हूं। लेकिन मुझे यकीन नहीं है कि ग्रेडिएंट कैसे करना है, केवल ग्राफ़ पर लागू होते हैं और संपूर्ण दृश्य पर नहीं, मैंने कुछ सवाल पढ़ा है लेकिन कुछ भी लागू नहीं पाया।

यहां छवि विवरण दर्ज करें

यह मुख्य ग्राफ आरेखण कोड है:

// Draw the graph UIBezierPath *barGraph = [UIBezierPath bezierPath]; barGraph.lineWidth = 1.0f; [blueColor setStroke]; TCDataPoint *dataPoint = self.testData[0]; CGFloat x = [self convertTimeToXPoint:dataPoint.time]; CGFloat y = [self convertDataToYPoint:dataPoint.dataUsage]; CGPoint plotPoint = CGPointMake(x,y); [barGraph moveToPoint:plotPoint]; for (int ii = 1; ii < [self.testData count]; ++ii) { dataPoint = self.testData[ii]; x = [self convertTimeToXPoint:dataPoint.time]; y = [self convertDataToYPoint:dataPoint.dataUsage]; plotPoint = CGPointMake(x, y); [barGraph addLineToPoint:plotPoint]; } [barGraph stroke]; 

मैं निम्नलिखित जैसे कोड के साथ प्रयोग करके ग्राफ को भरने का प्रयास कर रहा हूं, लेकिन ईमानदारी से यह सुनिश्चित नहीं कर सकता कि मैं विभिन्न ट्यूटोरियल और दस्तावेजों के माध्यम से जाने के बावजूद क्या कर रहा हूं:

 [barGraph closePath]; CGFloat colors [] = { 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0 }; CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB(); CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2); CGColorSpaceRelease(baseSpace); CGPoint startPoint = CGPointMake(CGRectGetMidX(self.bounds), self.topY); CGPoint endPoint = CGPointMake(CGRectGetMidX(self.bounds), self.bottomY); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClip(context); CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); CGGradientRelease(gradient); 

Solutions Collecting From Web of "कैसे एक ढाल के साथ एक UIBezierPath भरने के लिए?"

सबसे आसान तरीका है मूल ग्राफ बेज़ियर पथ का उपयोग करने के लिए आपको एक मुखौटा बनाने और एक ढाल परत पर यह मुखौटा लगाने के लिए। अब ग्रेडिएंट परत के शीर्ष पर ग्राफ़ लेयर लगाइये।

उदाहरण के लिए, उदाहरण के लिए, कैसपेलेयर बनाएं, ग्राफ़ बेज़ियर पथ को बंद करें, अपना रास्ता आकार के परत के रूप में सेट करें, और इसे काला करें अब आपके पास एक मुखौटा है जो ग्राफ़ के नीचे क्षेत्र का आकार है। अब एक CAGradientLayer बनाओ और CAShapeLayer का mask बनाओ। उस के सामने, वास्तविक ग्राफ को रखें।

इसलिए उदाहरण के लिए ( संपादित ):

यहां छवि विवरण दर्ज करें

यहाँ वह कोड है जिसे मैं उस चित्र बनाने के लिए प्रयोग किया था (मेरे बेज़ियर पथ बहुत सरल है, सिर्फ चार अंक तीन रेखा से जुड़े हुए हैं, लेकिन आप स्पष्ट रूप से देख सकते हैं कि इसके नीचे का क्षेत्र एक ढाल है):

 CAShapeLayer* shape = [[CAShapeLayer alloc] init]; shape.frame = self.graph.bounds; CGFloat h = shape.frame.size.height; CGFloat w = shape.frame.size.width; NSArray* points = @[ [NSValue valueWithCGPoint:CGPointMake(0,h-50)], [NSValue valueWithCGPoint:CGPointMake(70,h-100)], [NSValue valueWithCGPoint:CGPointMake(140,h-75)], [NSValue valueWithCGPoint:CGPointMake(w,h-150)], ]; UIBezierPath* p = [UIBezierPath new]; [p moveToPoint:[points[0] CGPointValue]]; for (NSInteger i = 1; i < points.count; i++) [p addLineToPoint:[points[i] CGPointValue]]; shape.path = p.CGPath; shape.strokeColor = [UIColor blackColor].CGColor; shape.lineWidth = 2; shape.fillColor = nil; CAGradientLayer* grad = [[CAGradientLayer alloc] init]; grad.frame = self.graph.bounds; grad.colors = @[(id)[UIColor blueColor].CGColor, (id)[UIColor yellowColor].CGColor]; CAShapeLayer* mask = [[CAShapeLayer alloc] init]; mask.frame = self.graph.bounds; [p addLineToPoint:CGPointMake(w,h)]; [p addLineToPoint:CGPointMake(0,h)]; [p closePath]; mask.path = p.CGPath; mask.fillColor = [UIColor blackColor].CGColor; grad.mask = mask; [self.graph.layer addSublayer:grad]; [self.graph.layer addSublayer:shape];