2010-06-09 11 views
6

का उपयोग कर चिकनी पाठ एनीमेशन (मार्की) चिकनी पाठ एनीमेशन के साथ एक मार्की नियंत्रण बनाने की कोशिश कर रहा है। वर्तमान प्रयासों में शामिल हैं:डब्ल्यूपीएफ

  • का उपयोग बदलने
  • कैनवास निर्भरता गुणों पर एनीमेशन का उपयोग करके अनुवाद (बाएं, दाएं)
  • कस्टम निर्भरता संपत्ति (प्वाइंट) पर एनीमेशन का उपयोग करना और ड्राइंग दृश्यों का उपयोग (formattedtext)
  • का उपयोग करना CompositionTarget.Rendering

लेकिन एनीमेशन अभी भी चंचल और संसाधन गहन (2-10% CPU) है।

टेस्ट खिड़की जो मैं एक चिकनी एनीमेशन का उत्पादन करना चाहिए मान WPF डिफ़ॉल्ट में इस्तेमाल किया कोड:

<TextBlock x:Name="_box" FontSize="64" CacheMode="BitmapCache" Text="lorem ipsum"> 
     <TextBlock.RenderTransform> 
      <TranslateTransform x:Name="AnimatedTranslateTransform" X="0" Y="0" /> 
     </TextBlock.RenderTransform> 
     <TextBlock.Triggers> 
      <EventTrigger RoutedEvent="TextBlock.Loaded"> 
       <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation 
        Storyboard.TargetName="AnimatedTranslateTransform" 
        Storyboard.TargetProperty="X" 
        From="-300" To="300" Duration="0:0:5" 
        AutoReverse="True" RepeatBehavior="Forever" /> 
       </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
      </TextBlock.Triggers> 
    </TextBlock> 

चेकलिस्ट:

  • की पुष्टि की कोई सॉफ्टवेयर प्रतिपादन जगह (एमएस प्रदर्शन उपकरण लेने और RenderCapability जाँच कर रहा है। टियर)
  • किसी भी कल्पनाशील वस्तु पर फ्रीज कॉलिंग
  • किसी भी बिटमैप प्रभाव और पारदर्शिता को अक्षम किया गया
  • चेक किए गए सभी मार्की नियंत्रण वहाँ (समान मुद्दों)

पर परीक्षण किया गया:

  • सीपीयू: Intell कोर 2 डुओ (T6600) @ 2.2GHz
  • राम: 4GB
  • GPU : Nvidia GeForce 9600M जी एस (नवीनतम ड्राइवरों)
  • ओएस: विंडोज 7 (64 बिट)

कोई विचार (या बेहतर अभी तक कोड उदाहरण)?

प्रतिक्रियाओं से ऐसा लगता है कि यह एक डब्लूपीएफ मुद्दा नहीं है (अन्य मार्की नियंत्रण दूसरों के लिए ठीक काम करते हैं लेकिन मेरे लिए नहीं), अखरोट मुझे हर मशीन पर एक ही समस्या मिल रही है जिस पर मैंने परीक्षण किया था।

+0

ऐसा लगता है कि इस पर परीक्षण किए गए कुछ कंप्यूटरों में समस्या है। एक रिलीज संस्करण भी बनाना बहुत मदद करता है। – Goran

उत्तर

1

आशा यह आप मदद कर सकते हैं - http://jobijoy.blogspot.com/2008/08/silverlight-marquee-control.html

और WPF संस्करण भी here

पाया जा सकता है
+0

हां, यह उन नियंत्रणों में से एक है जिन्हें मैंने देखा (डब्लूपीएफ संस्करण सहित) यह चिकनी नहीं है और यह इतना आसान कार्य के लिए काफी संसाधन गहन है। – Goran

+0

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

+0

यह वास्तव में अजीब है - प्रत्येक मशीन मैंने पाठ पर इसका परीक्षण किया है और छवि प्रत्येक 2 से 5 सेकंड में झटकेदार है। मैंने अपना प्रश्न अपडेट कर लिया है। – Goran

4

आपका एनीमेशन MilCore परत पर पूरी तरह से नियंत्रित किया जाएगा यदि:

  1. आपका TranslateTransform एक है RenderTransform (एक लेआउटट्रांसफॉर्म नहीं), और
  2. आप एक सरल एनीमेशन जैसे डबलएनीमेशन, और
  3. का उपयोग करते हैं 10
  4. आपका वस्तु कोई क्लिपिंग या अस्पष्टता गणना

एक TextBlock कि डिफ़ॉल्ट सेटिंग्स के साथ एक खिड़की का एक सीधा बच्चा है पर एक RenderTransform के लिए एक DoubleAnimation एनिमेटेड TranslateTransform उपयोग करने का प्रयास किया है।

  • यह अभी भी धीमी है, तो आपके Direct3D प्रणाली क्योंकि प्रबंधित कोड बिल्कुल शामिल नहीं है और MilCore की कॉल बहुत सरल कर रहे हैं के बारे में कुछ धीमी है, लेकिन

  • यदि यह आसानी से और कुशलता से काम करता है, संवर्द्धित यह देखने के लिए कि क्या बदलाव मंदी का कारण बनता है, इसे अपने खराब प्रदर्शन करने वाले कोड में बदलें।

Jobi जोय के जवाब देने के लिए आपकी प्रतिक्रिया को देखते हुए मुझे लगता है होगा समस्या अपने हार्डवेयर या Direct3D सेटअप में कहीं है, लेकिन पता लगाने के लिए एक ही रास्ता यह परीक्षण करने के लिए है।

+1

मैंने कोशिश की है (अद्यतन प्रश्न देखें) - मुझे अभी भी वही समस्याएं हैं। यदि आप मशीनों के साथ कोई समस्या है तो क्या आप निदान करने के बारे में सोच सकते हैं? – Goran

3

आप WPF 4.0 का उपयोग कर रहे हैं, तो इस मामले में, तत्व आप एनिमेट कर रहे हैं पर CacheMode="BitmapCache" (XAML में) की स्थापना, शायद एक TextBlock प्रयास करें।

+0

अच्छा विचार - लेकिन यह मेरी समस्या का समाधान नहीं करता है। ऐसा लगता है कि मेरी मशीन (ओएस या एचडब्लू) के साथ गलती है लेकिन मैं कुछ भी नहीं सोच सकता। – Goran

+2

पवित्र गाय! मुझे एक एनीमेशन के साथ समस्या थी जिसमें पचास यूआई तत्व शामिल थे। इसने मुझे कई हफ्तों तक पीड़ा दी, लेकिन इस विशेषता के साथ इसे मंजूरी दे दी गई। Arg, यह मुझे खोजने के लिए इतना लंबा क्यों लगा? – Jeb