2011-09-08 8 views
7

मैं एक छाया के साथ एक रेखा खींचने की कोशिश कर रहा हूं लेकिन मैं लाइन को रखना नहीं चाहता बल्कि केवल छाया रखना चाहता हूं।एक छाया के साथ एक रेखा खींचना, लेकिन केवल छाया रखना चाहते हैं। आईओएस

मैंने लाइन के स्ट्रोक रंग को साफ़ करने का प्रयास किया है, लेकिन जब मैं ऐसा करता हूं तो छाया भी गायब हो जाती है।

निम्नलिखित कोड 2 लाइनें बनाता है, मैं केवल छाया रखना चाहता हूं क्योंकि यह अच्छी लगती है और इसकी रेखा पिक्सेल की तरह नहीं है।

क्या यह संभव है?

CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0); 

    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 0.0, 1.0); 
    CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);  

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGFloat components[4] = {0.0, 0.0, 0.0, 1.0}; 
    CGColorRef shadowColor = CGColorCreate(colorSpace, components); 
    CGContextSetShadowWithColor(UIGraphicsGetCurrentContext(), CGSizeMake(10,10), 4.0, shadowColor); 

धन्यवाद।

उत्तर

9

तो आप इसे सीधे नहीं कर सकते क्योंकि छाया पथ को प्रतिबिंबित करती है, इसलिए यदि आप पथ पारदर्शी बनाते हैं, तो छाया भी पारदर्शी होगी। ऐसे कुछ कामकाज हैं जिन पर मैं सोच सकता हूं (आप जो भी कर रहे हैं उस पर निर्भर करता है) लेकिन एक चुस्त रास्ता सिर्फ उस पथ के नीचे छाया को खींचने के लिए होगा जो आप इसे खींच सकते हैं, मूल रूप से इसे मिटा सकते हैं। उदाहरण के लिए, यदि पृष्ठभूमि सफेद है, तो यह आपको पूरा करेगा:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); 
    CGContextSetLineWidth(context, 10.0); 
    CGContextMoveToPoint(context, 10.0, 30.0); 
    CGContextAddLineToPoint(context, 310.0, 30.0); 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGFloat components[4] = {0.0, 0.0, 0.0, 1.0}; 
    CGColorRef shadowColor = CGColorCreate(colorSpace, components); 
    CGContextSetShadowWithColor(context, CGSizeMake(0.0f,20.0f), 4.0, shadowColor); 
    CGContextStrokePath(context); 

    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); 
    CGContextSetLineWidth(context, 10.0); 
    CGContextMoveToPoint(context, 10.0, 30.0); 
    CGContextAddLineToPoint(context, 310.0, 30.0); 
    CGContextStrokePath(context); 
} 

उम्मीद है कि इससे मदद मिलती है।

2

क्यों आप अपनी छाया को छाया के रूप में नहीं खींचते हैं। छाया को खींचा नहीं है बल्कि इसके बजाय .25 या उससे कम अल्फा के साथ एक ब्लैक लाइन खींचें और इसे छाया के रूप में ऑफ़सेट करने के लिए ऑफ़सेट करें।

संबंधित मुद्दे