Gustavo 的个人资料mentas日志列表SkyDrive 工具 帮助
1月25日

Silverlight Motion eXtensions

Extension methods to extend any Silverlight FrameworkElement. With Motion eXtensions you can compose animations/behaviors using the "Builder pattern", writing short and simple code.
 
Extensions:
 
// Overview, download link at end of post

public static class MotionExtensions

{

    public static void MotionEnable(this FrameworkElement source)

 

    public static FrameworkElement Sleep(this FrameworkElement source, double duration);

 

    public static FrameworkElement Add(this FrameworkElement source, Panel panel);

    public static FrameworkElement Remove(this FrameworkElement source);

 

    public static FrameworkElement Show(this FrameworkElement source);

    public static FrameworkElement Hide(this FrameworkElement source);

 

    public static FrameworkElement Fade(this FrameworkElement source, double opacity, double duration);

    public static FrameworkElement Fade(this FrameworkElement source, double opacity, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Move(this FrameworkElement source, double x, double y, double duration);

    public static FrameworkElement Move(this FrameworkElement source, double x, double y, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Zoom(this FrameworkElement source, double scale, double duration);

    public static FrameworkElement Zoom(this FrameworkElement source, double scale, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Spin(this FrameworkElement source, double angle, double duration);

    public static FrameworkElement Spin(this FrameworkElement source, double angle, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Push(this FrameworkElement source, double x, double duration);

    public static FrameworkElement Push(this FrameworkElement source, double x, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Slice(this FrameworkElement source, double y, double duration);

    public static FrameworkElement Slice(this FrameworkElement source, double y, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement FlipH(this FrameworkElement source, double scale, double duration);

    public static FrameworkElement FlipH(this FrameworkElement source, double scale, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement FlipV(this FrameworkElement source, double scale, double duration);

    public static FrameworkElement FlipV(this FrameworkElement source, double scale, double duration, double acceleration, double deceleration);

 

    public static FrameworkElement Action(this FrameworkElement source, ActionHandler function);

 

    public static void Begin(this FrameworkElement source);

 

    public static void SetOpacity(this FrameworkElement source, double opacity);

    public static double GetOpacity(this FrameworkElement source);

    public static void SetTranslation(this FrameworkElement source, double x, double y);

    public static Point GetTranslation(this FrameworkElement source);

    public static void SetRotation(this FrameworkElement source, double angle);

    public static double GetRotation(this FrameworkElement source);

    public static void SetScale(this FrameworkElement source, double sx, double sy);

    public static Size GetScale(this FrameworkElement source);

}

 
Samples:
 

// Sample 1

Rectangle rect = new Rectangle();

rect.Fill = new SolidColorBrush(Color.FromArgb(128, 255, 0, 0));

rect.Width = 100;

rect.Height = 100;

 

rect.MotionEnable(); 

rect.SetTranslation(100, 100);

 

rect.Add(MyPanel).Spin(90, 0.5).Move(200, 200, 0.25).Zoom(2, 0.25).Remove().Begin();

rect.Sleep(0.75).Fade(0.0, 0.25).Begin();

 

// Sample 2

this.FlipH(0, 0.25).Action(MyAction).FlipH(1, 0.25).Begin();

 

void MyAction(FrameworkElement element)

{

    // Change element

}

 

// Sample 3

this.Push(-50, 0.25, 0.0, 0.5).Push(200, 0.25, 0.5, 0.0).Remove().Begin();

 
Notes:
 
  • RenderTransform, RenderTransformOrigin, Resources and Tag properties of element will be used
  • .Begin() must to be always at end of behavior functions
  • Use .MotionEnable() on element creation (or constructor) to avoid transform instance lost during events
  • You can easily convert (port) this code to WPF

Download Here

1月3日

HTML Helpers based on DCB

Website base structure HTML Helpers for ASP.NET or ASP.NET MVC.
 
 
 
Note: Behaviors requires jQuery, Microsoft is looking to make it part of their official development platform.
 

Download Here

1月1日

Introducing Design-Content-Behavior (DCB)

Design-Content-Behavior (DCB) is an architectural software pattern to split "View" of Model-View-Controller (MVC) in three layers.
This architecture isolates the fundamental areas of “User Experience".
 

Design
Look and Feel (states, styles, templates, ...)
Content
Interface/Contents (identification, layout, controls, text, media, ...)
Behavior
Content modification, events, transitions, internal/external Calls, ...