다음을 통해 공유


Expression Blend, WPF/E and the Torus Trip

So, if you haven't heard, Expression Interactive Designer has been renamed to Expression Blend and is out in beta.  Check it out!  The new UI is amazing and the power latent in this tool is ripe with possibility. 

Also, WPF/E is finally out in the wild -- give those tires a kick for sure

In honor of this all, here is a very simple trippy visualization I did, inspired by Blend, which turned me on to the fact that gradients have property called SpreadMethod with a very funky possible value of Stretch.  Setting this and playing with the Brush Transform tool in Blend revealed to me the RelativeTransform that hangs off brushes,  which can be animated. (I had to hand tweak some XAML to animate this transform.)  The result may be considered either zenith or nadir inducing: you make the call.  Try it here or click on the screenshot below.  XAML posted below.

<Page
 xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
 >
  <Page.Resources>
    <Storyboard x:Key="OnLoaded1">
      <DoubleAnimation From="2" To=".009" AutoReverse="True" DecelerationRatio="1"  RepeatBehavior="Forever" Duration="00:00:7" Storyboard.TargetName="scaleTransform" Storyboard.TargetProperty="(ScaleTransform.ScaleX)">
      </DoubleAnimation>
      <DoubleAnimation From="2" To=".009" AutoReverse="True"  DecelerationRatio="1" RepeatBehavior="Forever" Duration="00:00:7" Storyboard.TargetName="scaleTransform" Storyboard.TargetProperty="(ScaleTransform.ScaleY)">
      </DoubleAnimation>
    </Storyboard>
  </Page.Resources>
  <Page.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
      <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
    </EventTrigger>
  </Page.Triggers>
  <Ellipse x:Name="ellipse" Stroke="#FF000000" Width="{Binding Path=ActualWidth, ElementName=LayoutRoot, Mode=Default}" Height="{Binding Path=ActualHeight, ElementName=LayoutRoot, Mode=Default}"  RenderTransformOrigin="0.5,0.5">
    <Ellipse.Fill>
      <RadialGradientBrush SpreadMethod="Repeat">
        <RadialGradientBrush.RelativeTransform>
          <ScaleTransform  x:Name="scaleTransform" CenterX="0.5" CenterY="0.5" ScaleX="2" ScaleY="2"/>
        </RadialGradientBrush.RelativeTransform>
        <GradientStop Color="#FFFFFFFF" Offset="0.865"/>
        <GradientStop Color="#FF000000" Offset="1"/>
        <GradientStop Color="#FF000000" Offset="0.654"/>
        <GradientStop Color="#FFD0D0D0" Offset="0.058"/>
      </RadialGradientBrush>
    </Ellipse.Fill>
    <Ellipse.RenderTransform>
      <ScaleTransform ScaleX="2" ScaleY="2"/>
    </Ellipse.RenderTransform>
  </Ellipse>
</Page>

Comments

  • Anonymous
    December 05, 2006
    Cool animation!  Might be fun to play with the Gradient Options Pad, Reflect, and Repeat with this.

  • Anonymous
    December 05, 2006
    oops, I see it in there now as SpreadMethod="Repeat".  Changing this to Reflect in XAMLPad or XAML Cruncher also results in visually interesting animation.  Fun stuff.