2012-07-06 15 views
7

मैं काहिरा में रेडियल ढाल का उपयोग कर रहा हूं, लेकिन मुझे अपेक्षित नतीजे नहीं मिल रहे हैं। मैं जो रेडियल ग्रेडिएंट प्राप्त कर रहा हूं उससे अपेक्षाकृत कम अस्पष्ट है और वांछित परिणाम प्राप्त करने के लिए मैं रंग स्टॉप के साथ परेशान नहीं लग सकता। यहां कोड है:काहिरा रेडियल ग्रेडियंट

cairo_pattern_t *pat; 

pat = cairo_pattern_create_radial(100.0, 100.0, 0.0, 100.0, 100.0, 20.0); 
cairo_pattern_add_color_stop_rgba(pat, 0, 0, 0, 0, 1); 
cairo_pattern_add_color_stop_rgba(pat, 1, 0, 0, 0, 0); 

यहां मैं जो बात कर रहा हूं उसकी एक छवि है।

radial gradient

+0

आप 'मैं क्या चाहता हूँ' छवि कैसे बना दिया? –

+0

मैं पिक्सेलमेटर में गया और एक ब्रश का उपयोग किया जिसमें 0% कठोरता सेट है। – Q2Ftb3k

+0

कैरो परिणाम रैखिक रूप से इंटरपोलिंग का उपयोग कर रहा है। केंद्र से दूर प्रत्येक पिक्सेल ग्रे लाइटर के 2 रंग प्राप्त करता है। 'मैं क्या चाहता हूं'-परिणाम रैखिक नहीं है। यदि आप मुझे अनुमान लगाना चाहते हैं, तो पिक्सेलमेटर परिणाम गामा को सही करता है, जो मानव दृष्टि के आसपास काम करता है। –

उत्तर

5

#cairo आईआरसी चैनल सुझाव (धन्यवाद कंपनी!) Cairo_mask (उपयोग करने के लिए) cairo_paint के बजाय() ढाल आकर्षित करने के लिए। इसका परिणाम रैखिक प्रगति के बजाय वर्ग में होता है।

मैंने निम्नलिखित में निम्नलिखित किया था। भाषा के लिए खेद है, लेकिन कुछ प्रोटोटाइप करना आसान है। यह 1 के नक्शे: 1 सी एपीआई के लिए और नहीं अनुवाद करने के लिए मुश्किल होना चाहिए:

cairo = require("lgi").cairo 

s = cairo.ImageSurface(cairo.Format.ARGB32, 200, 100) 
c = cairo.Context(s) 
c:set_source_rgb(1, 1, 1) 
c:paint() 

p = cairo.Pattern.create_radial(50, 50, 0, 50, 50, 20) 
p:add_color_stop_rgba(0, 0, 0, 0, 1) 
p:add_color_stop_rgba(1, 0, 0, 0, 0) 

c:save() 
c:rectangle(0, 0, 100, 100) 
c:clip() 
c.source = p 
c:paint() 
c:restore() 

p = cairo.Pattern.create_radial(50, 50, 2, 50, 50, 25) 
p:add_color_stop_rgba(0, 0, 0, 0, 1) 
p:add_color_stop_rgba(1, 0, 0, 0, 0) 

c:translate(100, 0) 
c:save() 
c:rectangle(0, 0, 100, 100) 
c:clip() 
c.source = p 
c:mask(p) 
c:restore() 

s:write_to_png("test.png") 
मेरे लिए

, दूसरे चक्र (एक है कि cairo_mask था() 'एक काले रंग की स्रोत के साथ d) एक बहुत अधिक लग रहा है आप क्या चाहते हैं की तरह:

The image that the lua code produces

+0

बढ़िया! यह पूरी तरह से काम करता है, धन्यवाद! – Q2Ftb3k

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