2010-12-30 39 views
7

मेरे पास एक ग्रिड, एक विंडो रूट तत्व है। मैं एक एनीमेशन लागू करना चाहता हूं जो 5 सेकंड में सफेद से हरे रंग के पृष्ठभूमि रंग को बदल देगा। यहां मैंने जो किया है:डब्ल्यूपीएफ: रंग परिवर्तन को एनिमेट कैसे करें?

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    ColorAnimation animation; 

    animation = new ColorAnimation(); 
    animation.From = Colors.White; 
    animation.To = Colors.Green; 
    animation.Duration = new Duration(TimeSpan.FromSeconds(5)); 
    rootElement.BeginAnimation(Grid.BackgroundProperty, animation); 
} 

कोड काम नहीं करता है। कुछ भी नहीं बदल रहा है। मैं गलती कहां कर रहा हूँ? धन्यवाद।

<ColorAnimation 
Storyboard.TargetName="PlayButtonArrow" 
Storyboard.TargetProperty="Fill.Color" 
From="White" 
To="Green"    
Duration="0:0:5.0" 
AutoReverse="False"/> 

उत्तर

13

हल:

+0

खुशी है कि आप इसे हल कर पाएंगे। आपको अपना खुद का उत्तर चुनना चाहिए जिसे आपने यहां स्वीकार कर लिया है। –

+0

@zedo मुझे पता है, लेकिन यह मुझे बताता है कि मैं इसे अगले दो दिनों में सही नहीं चिह्नित कर पाऊंगा। यह चीजों को पहले ठंडा करने की प्रतीक्षा कर रहा है, हाहाहाहा – Boris

+0

"से" सफेद "से" ऑरगिनल छवि रंग कैसे सेट करें? – RollRoll

12

इस आज़मा कर देखें!

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    SolidColorBrush rootElementBrush; 
    ColorAnimation animation; 

    rootElementBrush = this.FindResource("RootElementBrush") as SolidColorBrush; 

    // Animate the brush 
    animation = new ColorAnimation(); 
    animation.To = Colors.Green; 
    animation.Duration = new Duration(TimeSpan.FromSeconds(5)); 
    rootElementBrush.BeginAnimation(SolidColorBrush.ColorProperty, animation); 
} 

यहाँ व्याख्या दी गई है:

मेरे प्रारंभिक गलती है कि मैं यह करने के लिए रंग बताए द्वारा Grid.BackgroundProperty बदलने के लिए चाहता था, लेकिन यह बजाय ब्रश को स्वीकार करता है ... सेब और संतरे! इसलिए, मैंने SolidColorBrush स्थैतिक संसाधन बनाया और इसे रूट एलिमेंटब्रश नाम दिया। एक्सएएमएल में, मैंने उस स्थिर संसाधन के लिए Grid rootElement की पृष्ठभूमि संपत्ति सेट की है। और अंत में, मैंने एनीमेशन को संशोधित किया, इसलिए अब यह SolidColorBrush के लिए रंग बदलता है। आसान!

+0

मुझे इसे कोड-बैक में चाहिए और मुझे इसे कोड-पीछे से कॉल करने की आवश्यकता है। मैं सोच रहा हूं कि मैं अपने कोड में गलती कर रहा हूं क्योंकि मैं रंग बदलने की कोशिश कर रहा हूं, लेकिन 'ग्रिड। बैकग्राउंड' संपत्ति वास्तव में ब्रश ले रही है ... – Boris

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