2010-07-01 11 views
12

में स्टारवार्स टेक्स्ट इफेक्ट्स हमारी कंपनी के अधिकारियों ने हमारे आवेदन में हमारे बॉक्स के लिए "स्टार वार्स क्रॉल" स्टाइल क्रेडिट स्क्रीन के एकीकरण का अनुरोध किया है और मुझे इसे एक सप्ताह के भीतर पूरा करने का काम सौंपा गया है। हमने हाल ही में हमारे WinForms एप्लिकेशन को WPF पर पोर्ट किया है और इसलिए हम सभी WPF के लिए बहुत नए हैं।डब्ल्यूपीएफ

जैसा कि मैं WPF के लिए भी नया हूं, मुझे यकीन नहीं है कि कहां से शुरू करना है। क्या कोई मुझे एक सूचक दे ​​सकता है जहां मैं इस प्रभाव के मौजूदा उदाहरण की तलाश कर सकता हूं?

मुझे लगता है कि डबल एनीमेशन है जहां मैं दिख रहा हूं, लेकिन मैं पाठ को स्क्रीन को कैसे क्रॉल करता हूं और एक बिंदु में जहां मैं थोड़ा खो गया हूं और टेक्स्ट को कैसे फीका कर सकता हूं और स्क्रीन के बीच में स्थानांतरित करें (स्टार वार्स बिट की तरह)।

क्या यह WPF में करना आसान है या सिर्फ एक एनीमेशन जा रहा है? समस्या यह है कि हमारे पास पाठ है जो स्थापित संस्करण और उपयोगकर्ता के आधार पर बदलता है।

+0

स्टार वार्स संदर्भ :) मैं स्टार वार्स प्यार के लिए +1;) – Arcturus

+1

सभी नक्षत्रयुद्ध प्रभाव, फोंट, आदि ढांचे में शामिल किया जाना चाहिए! – Jonathan

+0

को इसे स्टारवार्स टैग करना चाहिए था;] – Bas

उत्तर

1

त्वरित खोज पर this मिला। यह सिल्वरलाइट के लिए डिज़ाइन किया गया है लेकिन आप इसे आसानी से WPF पर पोर्ट कर सकते हैं। उदाहरण के लिए यह उदाहरण में ब्लेंड का उपयोग करता है जो यूआई डिज़ाइन की बात करते समय WPF और Silverlight दोनों के लिए उपयोग किया जाता है।

यह आपको एक प्रारंभिक बिंदु देना चाहिए।

सम्मान ...

+1

यह डेस्कटॉप WPF में काम नहीं कर सकता है: इसे पढ़ें http://social.msdn.microsoft.com/Forums/en/wpf/thread/9acb712a-b592-49e7-83a1-e3ee7ff03014 प्रक्षेपण है Silverlight – Andrey

+0

की सुविधा एंड्री सही है ... आपको WPF –

+0

में 3 डी का उपयोग करना है, इसके लिए धन्यवाद, मैं पहले से ही इसमें आया हूं लेकिन जैसा कि पता चला है कि मैं इसे आसानी से काम नहीं कर सका। –

15

यहां एक त्वरित नमूना है जो मैंने आपके लिए एक साथ फेंक दिया है। यह 3 डी का उपयोग करता है और ऐसा करने के लिए प्रतीत नहीं होता है। लेकिन यह काम करता है!

<Window 
    x:Class="StarWars.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="480" Width="640" Background="Black"> 

    <Viewport3D ClipToBounds="True" Width="Auto" Height="Auto"> 
    <Viewport3D.Triggers> 
     <EventTrigger RoutedEvent="Viewport3D.Loaded"> 
     <BeginStoryboard> 
      <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="Translation" 
       Storyboard.TargetProperty="OffsetY" 
       To="10" 
       Duration="0:1:0" /> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
    </Viewport3D.Triggers> 
    <Viewport3D.Camera> 
     <PerspectiveCamera 
     FarPlaneDistance="100" 
     NearPlaneDistance="1" 
     FieldOfView="30" 
     LookDirection="0,25,-13" 
     UpDirection="0,1,0" 
     Position="0,2,1.5" /> 
    </Viewport3D.Camera> 
    <ModelVisual3D> 
     <ModelVisual3D.Content> 
     <Model3DGroup> 
      <Model3DGroup.Children> 
      <AmbientLight Color="#FF808080" /> 
      <GeometryModel3D> 
       <GeometryModel3D.Transform> 
       <TranslateTransform3D 
        x:Name="Translation" 
        OffsetY="3" /> 
       </GeometryModel3D.Transform> 
       <GeometryModel3D.Geometry> 
       <MeshGeometry3D 
       Positions="-1,-2,0 1,-2,0 1,1,0 -1,1,0" 
       TriangleIndices="0 1 2 0 2 3" 
       TextureCoordinates="0,1 1,1 1,0 0,0" 
       Normals="0,0,1 0,0,1" /> 
       </GeometryModel3D.Geometry> 
       <GeometryModel3D.Material> 
       <DiffuseMaterial> 
        <DiffuseMaterial.Brush> 
        <VisualBrush> 
         <VisualBrush.Visual> 
         <TextBlock 
         Foreground="Yellow" 
         FontFamily="Consolas" 
         TextAlignment="Center"> 
          Lorem ipsum dolor sit amet,<LineBreak/> 
          consectetur adipiscing elit.<LineBreak/> 
          Integer malesuada, massa<LineBreak/> 
          vitae suscipit dictum, purus<LineBreak/> 
          dolor volutpat arcu, ac<LineBreak/> 
          tincidunt erat mauris sed nisi.<LineBreak/> 
          Sed ac eros ac augue<LineBreak/> 
          ullamcorper sodales sed id leo.<LineBreak/><LineBreak/> 
          Suspendisse nibh enim,<LineBreak/> 
          hendrerit vitae pretium et,<LineBreak/> 
          gravida in tortor. Lorem ipsum<LineBreak/> 
          dolor sit amet, consectetur<LineBreak/> 
          adipiscing elit. Maecenas<LineBreak/> 
          condimentum enim eu tellus<LineBreak/> 
          feugiat mollis ac ut arcu.<LineBreak/> 
          Ut fringilla tempus volutpat.<LineBreak/> 
          Duis elementum convallis<LineBreak/> 
          tincidunt.<LineBreak/><LineBreak/> 

          Mauris lacus tortor,<LineBreak/> 
          tristique nec congue at,<LineBreak/> 
          adipiscing sed eros.<LineBreak/><LineBreak/> 

          In volutpat eros id nunc<LineBreak/> 
          hendrerit eget aliquet nisi<LineBreak/> 
          lacinia.<LineBreak/><LineBreak/> 

          Suspendisse et lorem augue, non eleifend est. 
         </TextBlock> 
         </VisualBrush.Visual> 
        </VisualBrush> 
        </DiffuseMaterial.Brush> 
       </DiffuseMaterial> 
       </GeometryModel3D.Material> 
      </GeometryModel3D> 
      </Model3DGroup.Children> 
     </Model3DGroup> 
     </ModelVisual3D.Content> 
    </ModelVisual3D> 
    </Viewport3D> 
</Window> 
+0

मैं कम से कम वास्तविक स्टार वार्स स्क्रॉलिंग टेक्स्ट का उपयोग करके +1 से सम्मानित किया होगा ... –

+0

नहीं, बस मजाक कर रहा है :-) +1 –

+0

यह बहुत अच्छा है। –

10

मेरा संस्करण देखें। यह लकीर खींचने की क्रिया है - जब पाठ निश्चित बिंदु यह disapperating शुरू होता है मूल संस्करण में की तरह, पर आता है (आप यूट्यूब पर देख सकते हैं)

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="500" Width="500" Background="Black"> 
    <Window.Triggers> 
     <EventTrigger RoutedEvent="Window.Loaded" > 
      <BeginStoryboard> 
       <Storyboard Name="story"> 
        <DoubleAnimation 
         Storyboard.TargetName="TextPos" 
         Storyboard.TargetProperty="OffsetY" 
         From="-1.5" To="5" Duration="0:1:30" RepeatBehavior="Forever"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Window.Triggers> 

    <Grid> 
     <Viewport3D Name="viewport3D1" > 
      <Viewport3D.Camera> 
       <PerspectiveCamera x:Name="camMain" Position="0.5 -1 0.4" LookDirection="0 5 -1"> 
       </PerspectiveCamera> 
      </Viewport3D.Camera> 
      <ModelVisual3D> 
       <ModelVisual3D.Content> 
        <AmbientLight Color="White"></AmbientLight> 

       </ModelVisual3D.Content> 
      </ModelVisual3D> 
      <ModelVisual3D> 
       <ModelVisual3D.Content> 
        <GeometryModel3D> 
         <GeometryModel3D.Geometry> 
          <MeshGeometry3D x:Name="meshMain" 
           Positions="0.2 -5 0 0.8 -5 0 0.2 1 0 0.8 1 0" 
           TriangleIndices="0 1 3 0 3 2" 
           TextureCoordinates="0 1 1 1 0 0 1 0"> 
          </MeshGeometry3D> 
         </GeometryModel3D.Geometry> 
         <GeometryModel3D.Material> 
          <DiffuseMaterial x:Name="matDiffuseMain" > 
           <DiffuseMaterial.Brush> 
            <VisualBrush> 
             <VisualBrush.Visual> 
              <Grid Width="200" Height="1000" Background="Black"> 
               <Border BorderBrush="Black"> 
                <TextBlock Background="Black" 
                  TextWrapping="Wrap" 
                  Foreground="#FFFFDA00" 
                  FontFamily="Franklin Gothic" 
                  FontWeight="Bold" 
                  FontSize="16" 
                  TextAlignment="Justify" 
                  LineHeight="17" 
                  LineStackingStrategy="BlockLineHeight" 
                  > 
                 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <LineBreak/> <LineBreak/> Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<LineBreak/> <LineBreak/>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.<LineBreak/> <LineBreak/>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<LineBreak/> <LineBreak/>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.<LineBreak/> <LineBreak/>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
                </TextBlock> 
               </Border> 
              </Grid> 
             </VisualBrush.Visual> 
            </VisualBrush> 
           </DiffuseMaterial.Brush> 
          </DiffuseMaterial> 
         </GeometryModel3D.Material> 
        </GeometryModel3D>      
       </ModelVisual3D.Content> 
       <ModelVisual3D.Transform> 
        <TranslateTransform3D x:Name="TextPos" OffsetY="-1.5"/> 
       </ModelVisual3D.Transform> 
      </ModelVisual3D> 
      <ModelVisual3D> 
       <ModelVisual3D.Content> 
        <GeometryModel3D> 
         <GeometryModel3D.Geometry> 
          <MeshGeometry3D x:Name="meshShadow" 
           Positions="0.2 0.5 0.1 0.8 0.5 0.1 0.2 5 0.1 0.8 5 0.1" 
           TriangleIndices="0 1 3 0 3 2" 
           TextureCoordinates="0 1 1 1 0 0 1 0"> 
          </MeshGeometry3D> 
         </GeometryModel3D.Geometry> 
         <GeometryModel3D.Material> 
          <DiffuseMaterial x:Name="matDiffuseShade" > 
           <DiffuseMaterial.Brush> 
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
             <GradientStop Color="Black" Offset="0.85" /> 
             <GradientStop Color="#00000000" Offset="1.0" /> 
            </LinearGradientBrush> 
           </DiffuseMaterial.Brush> 
          </DiffuseMaterial> 
         </GeometryModel3D.Material> 
        </GeometryModel3D> 
       </ModelVisual3D.Content> 
      </ModelVisual3D> 
     </Viewport3D> 
    </Grid> 
</Window> 
+0

यह कमाल है। मेरे ऐप में उपयोग के लिए इसे अनुकूलित करने में सक्षम था! –

+0

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

+0

@TurnDrummer वाह यह सुनकर अच्छा लगा कि मैंने जो पोस्ट 7 साल पहले लिखा था वह अभी भी किसी के लिए उपयोगी है। – Andrey