2013-05-23 9 views
5

मैं राफेल पथ पर केवल एक आंतरिक चमक या छाया प्राप्त करने का एक तरीका ढूंढ रहा हूं। दुर्भाग्य से, आप केवल अंडाकार या एक सर्कल पर रेडियल ग्रेडियेंट कर सकते हैं।राफेल आंतरिक चमक?

एक विचार पथों की एक श्रृंखला बनाने के लिए हो सकता है जो मूल पथ के अंदर थोड़ा छोटा और फिट हो और फिर उन्हें विभिन्न स्ट्रोक रंग देने के लिए हो, लेकिन मुझे नहीं पता कि मैं उससे कैसे संपर्क करूंगा। कुछ फ़ंक्शन जो पथ और subtracts लेता है या संख्याओं को मानता है कि वे कहां हैं ... वैसे भी, अगर किसी के पास कोई विचार है, या शायद कोई अन्य जावास्क्रिप्ट लाइब्रेरी जो ऐसा करती है, तो यह बहुत अच्छा होगा।

+2

आप जवाब को स्वीकार करना चाहिए, मुझे लगता है कि यह एक बहुत अच्छा समाधान है। – Gago

+0

@ ब्रायन किसी भी माध्यम से आश्चर्यजनक नहीं है, क्योंकि चमक या तो मूल पथ के बाहर जारी रहेगी, या मूल पथ तक पहुंचने पर विलुप्त हो जाएगी (अधिक पारदर्शी हो)। लेकिन ठीक है, मैं स्वीकार करूंगा। – dezman

+0

@ वाटसन, यदि चमक बाहर चलती है, तो इसके पैमाने को छोटा करें या चमक कार्य ऑफ ऑफसेट/ऑफसेट/अस्पष्टता बदलें। क्या आप मुझे बता रहे हैं कि यदि आपके पास 2 समान आकार एक छोटे और एक बड़े हैं, तो आप बड़े पैमाने पर छोटे स्थान पर नहीं हो सकते हैं? – Brian

उत्तर

3

यहाँ ठीक है आप कैसे प्राप्त कर सकते हैं। मुझे लगता है कि यह बहुत सरल है। मुझे पता है कि मैन्युअल रूप से अपने मूल से छाया पथ बनाना मुश्किल है। लेकिन scale() फ़ंक्शन नामक एक चाल है। कैसे आप भीतरी छाया या भीतरी चमक प्रभाव प्राप्त कर सकते हैं के लिए चरण:

  1. अपना रास्ता एक और रास्ता
  2. पैमाने सेट करें() क्लोन पथ के में
  3. क्लोन यह बनाएं 0.9 * मूल
  4. तो होना करने के लिए क्लोन पथ छुपाने के लिए, लेकिन उस पर चमक() फ़ंक्शन लागू

कोड:

var paper = Raphael("notepad", 500, 500); 

var path = paper.path("M 50 200 L 120 100 200 190 80 250z"); 
var shadow = path.clone().scale(0.9).hide(); 


shadow.glow(); 
path.attr({stroke: "darkred"}); 

DEMO पर देखें, यह सही नहीं है लेकिन मामूली परिवर्तनों के साथ, आप जो चाहते हैं उसे प्राप्त कर सकते हैं।

इसके अलावा एक ओर नोट के रूप में:
glow() समारोह offsetx, offsety, opacity जैसी विशेषताओं है ... उन विशेषताओं को बदलने से आप अपने पसंदीदा छाया/चमक दे देंगे।

अपडेट किए गए कोडhttp://jsfiddle.net/jUTFm/41/

+0

धन्यवाद! क्या आपको लगता है कि पहले पथ का उपयोग बाध्यकारी बॉक्स के रूप में करना संभव होगा, ताकि छाया का चमक मूल पथ के बाहर नहीं बढ़ेगा? – dezman

+0

हां, यही मतलब है कि "उन विशेषताओं को बदलने से आपको अपनी पसंदीदा छाया/चमक मिल जाएगी" – Brian

+0

भी स्केल() फ़ंक्शन के साथ खेलें, अपने पथ – Brian

0

देखें here। आप कुछ प्रकार के चमकते प्रभाव देने के लिए पथ की चौड़ाई को एनिमेट करने और धीरे-धीरे रंग को अंधेरे करने का प्रयास कर सकते हैं।

बाहर की जांच नीचे का हिस्सा

brain = paper.add(brain); 

    brain.attr('stroke', '#ff0'); 

    brain.transform('s 0.5, 0.5 0 0'); 

    glow = brain.glow({ 
    color: '#ff0', 
    width: 5 
    }); 

    anim = Raphael.animation({ 
    "stroke-width": 15, 
    opacity: 1 
    }, 500); 


    anim = anim.repeat(Infinity); 
    glow.animate(anim); 
+1

लेकिन बात यह है कि, मैं केवल पथ के अंदर चमक चाहता हूं, बाहर अप्रभावित रहना चाहिए। इसके अलावा, मैं स्ट्रोक के साथ गड़बड़ नहीं करना चाहता, कम से कम मूल पथ से नहीं। – dezman

+0

किसी भी दृश्य को देखने के बिना सलाह देना मुश्किल है, पथ के अंदर से आपका क्या मतलब है, क्या आप उस क्षेत्र को रेफ्रिजर कर रहे हैं जो आपके आकार से अनदेखा है, यदि हां, तो हो सकता है कि आपके पास आयताकार पृष्ठभूमि हो और उसमें चमकने की कोशिश हो , आपके पथ को उन क्षेत्रों को मुखौटा करना चाहिए जो नीचे हैं और खोखले क्षेत्र चाल कर सकते हैं ?? – varun

+0

अन्य सलाह ड्रॉप छाया प्लगइन का उपयोग करने के लिए हो सकती है, लेकिन यहां एक रंग जोड़ें https://github.com/dahoo/raphael.dropshadow.js – varun