原文:与众不同 windows phone (17) - Graphic and Animation(画图和动画)

[索引页]
[源码下载]

与众不同 windows phone (17) - Graphic and Animation(画图和动画)

作者:webabcd

介绍
与众不同 windows phone 7.5 (sdk 7.1) 之画图和动画

  • 图形
  • 画笔
  • 转换
  • 动画
  • 缓动

示例
1、图形(Shape)
ShapeDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.GraphicAndAnimation.ShapeDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel Name="root" Orientation="Vertical" HorizontalAlignment="Left"> <!--
以 xaml 的方式绘制图形
更多详细内容请参见:
http://www.cnblogs.com/webabcd/archive/2008/10/23/1317407.html
http://www.cnblogs.com/webabcd/archive/2008/10/27/1320098.html
--> <!--画矩形-->
<Rectangle Width="200" Height="50" Fill="Red" Stroke="Yellow" StrokeThickness="3" /> <!--画多条连接起来的直线-->
<Polyline Points="10,100 50,10 100,100" Stroke="Green" StrokeThickness="20" StrokeLineJoin="Round" /> <!--画直线-->
<Line X1="0" Y1="0" X2="400" Y2="0" Stroke="Blue" StrokeThickness="10" StrokeDashArray="2,4,6" StrokeDashCap="Triangle" /> <!--画椭圆-->
<Ellipse Stroke="Red" Fill="Yellow" StrokeThickness="6" Width="100" Height="50"></Ellipse> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

ShapeDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; namespace Demo.GraphicAndAnimation
{
public partial class ShapeDemo : PhoneApplicationPage
{
public ShapeDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(ShapeDemo_Loaded);
} void ShapeDemo_Loaded(object sender, RoutedEventArgs e)
{
// 以 代码 的方式绘制图形 // 画多边形
Polygon polygon = new Polygon();
polygon.Stroke = new SolidColorBrush(Colors.Purple);
polygon.StrokeThickness = 3d;
polygon.Points.Add(new Point(, ));
polygon.Points.Add(new Point(, ));
polygon.Points.Add(new Point(, ));
polygon.Points.Add(new Point(, )); root.Children.Add(polygon);
}
}
}

2、画笔(Brush)
BrushDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.GraphicAndAnimation.BrushDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel Name="root" Orientation="Vertical" HorizontalAlignment="Left"> <!--
以 xaml 的方式应用画笔
更多详细内容请参见:
http://www.cnblogs.com/webabcd/archive/2008/10/30/1322658.html
--> <Ellipse Margin="10" Width="200" Height="100" Stroke="Yellow" StrokeThickness="3">
<Ellipse.Fill>
<!--单色画笔-->
<SolidColorBrush Color="#FF0000" Opacity="0.5" />
</Ellipse.Fill>
</Ellipse> <MediaElement x:Name="mediaElement" Source="Assets/Demo.mp4" Width="0" Height="0" />
<Rectangle Width="300" Height="100">
<Rectangle.Fill>
<!--视频画笔-->
<VideoBrush SourceName="mediaElement" />
</Rectangle.Fill>
</Rectangle> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

BrushDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; namespace Demo.GraphicAndAnimation
{
public partial class BrushDemo : PhoneApplicationPage
{
public BrushDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(BrushDemo_Loaded);
} void BrushDemo_Loaded(object sender, RoutedEventArgs e)
{
// 以 代码 的方式应用画笔 // 使用放射性渐变画笔
GradientStop gs1 = new GradientStop();
gs1.Color = Colors.Red;
gs1.Offset = 0d;
GradientStop gs2 = new GradientStop();
gs2.Color = Colors.Green;
gs2.Offset = 0.3d;
GradientStop gs3 = new GradientStop();
gs3.Color = Colors.Blue;
gs3.Offset = 1d; LinearGradientBrush brush = new LinearGradientBrush();
brush.StartPoint = new Point(, );
brush.EndPoint = new Point(, );
brush.GradientStops.Add(gs1);
brush.GradientStops.Add(gs2);
brush.GradientStops.Add(gs3); Rectangle rect = new Rectangle();
rect.Width = 200d;
rect.Height = 200d;
rect.Fill = brush; root.Children.Add(rect);
}
}
}

3、转换(Transform)
TransformDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.GraphicAndAnimation.TransformDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel Name="root" Orientation="Vertical"> <!--
以 xaml 的方式应用转换
更多详细内容请参见:
http://www.cnblogs.com/webabcd/archive/2008/11/03/1325150.html
http://www.cnblogs.com/webabcd/archive/2010/08/25/1807797.html
--> <!--复合转换-->
<Rectangle Height="100" Width="100" Fill="Red">
<Rectangle.RenderTransform>
<CompositeTransform SkewX="30" Rotation="60" ScaleX="0.6" ScaleY="0.3" />
</Rectangle.RenderTransform>
</Rectangle> <!-- 用 TransformGroup(多个单一转换组合在一次) 的方式达到上面的 CompositeTransform 的相同效果 -->
<Rectangle Height="100" Width="100" Fill="Red">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0.6" ScaleY="0.3" />
<SkewTransform AngleX="30" />
<RotateTransform Angle="60" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

TransformDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; namespace Demo.GraphicAndAnimation
{
public partial class TransformDemo : PhoneApplicationPage
{
public TransformDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(TransformDemo_Loaded);
} void TransformDemo_Loaded(object sender, RoutedEventArgs e)
{
// 以 代码 的方式应用转换 // 使用旋转转换
RotateTransform rt = new RotateTransform();
rt.Angle = ; Rectangle rect = new Rectangle();
rect.Width = 200d;
rect.Height = 200d;
rect.Fill = new SolidColorBrush(Colors.Green);
rect.RenderTransform = rt; root.Children.Add(rect);
}
}
}

4、动画(Animation)
AnimationDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.GraphicAndAnimation.AnimationDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel Name="root" Orientation="Vertical"> <!--
以 xaml 的方式增加动画效果
更多详细内容请参见:
http://www.cnblogs.com/webabcd/archive/2008/11/06/1327758.html
--> <!--给 Rectangle 的 Width 增加动画效果-->
<StackPanel.Resources>
<BeginStoryboard x:Name="beginStoryboard">
<Storyboard x:Name="storyboard">
<DoubleAnimation
Storyboard.TargetName="rectangle"
Storyboard.TargetProperty="Width"
From="200"
To="100"
Duration="00:00:03"
AutoReverse="True"
RepeatBehavior="Forever">
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</StackPanel.Resources> <Rectangle x:Name="rectangle" Width="200" Height="100" Fill="Red" StrokeThickness="6" /> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

AnimationDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; namespace Demo.GraphicAndAnimation
{
public partial class AnimationDemo : PhoneApplicationPage
{
public AnimationDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(AnimationDemo_Loaded);
} void AnimationDemo_Loaded(object sender, RoutedEventArgs e)
{
// 以 代码 的方式增加动画效果 // 画个圆
Ellipse ellipse = new Ellipse();
ellipse.Width = 100d;
ellipse.Height = 100d;
ellipse.Fill = new SolidColorBrush(Colors.Green);
root.Children.Add(ellipse); // 为上面画的圆增加颜色动画效果
ColorAnimation ca = new ColorAnimation();
ca.Duration = TimeSpan.FromSeconds();
ca.From = Colors.Green;
ca.To = Colors.Blue;
ca.AutoReverse = true;
ca.RepeatBehavior = RepeatBehavior.Forever; Storyboard.SetTarget(ca, ellipse);
Storyboard.SetTargetProperty(ca, new PropertyPath("(Ellipse.Fill).(SolidColorBrush.Color)")); Storyboard s = new Storyboard();
s.Children.Add(ca);
s.Begin();
}
}
}

5、缓动(Easing)
EasingDemo.xaml

<phone:PhoneApplicationPage
x:Class="Demo.GraphicAndAnimation.EasingDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel Name="root" Orientation="Vertical"> <!--
以 xaml 的方式为动画增加缓动效果
更多详细内容请参见:
http://www.cnblogs.com/webabcd/archive/2009/08/20/1550334.html
--> <!--给 Rectangle 的 Width 增加动画效果,同时为此动画增加缓动效果-->
<StackPanel.Resources>
<BeginStoryboard x:Name="beginStoryboard">
<Storyboard x:Name="storyboard">
<DoubleAnimation Storyboard.TargetName="rectangle" Storyboard.TargetProperty="Width" From="400" To="100" Duration="00:00:05" AutoReverse="True" RepeatBehavior="Forever">
<DoubleAnimation.EasingFunction>
<!--增加缓动效果-->
<BounceEase EasingMode="EaseInOut" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</StackPanel.Resources> <Rectangle x:Name="rectangle" Width="400" Height="100" Fill="Red" StrokeThickness="6" /> </StackPanel>
</Grid> </phone:PhoneApplicationPage>

EasingDemo.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; namespace Demo.GraphicAndAnimation
{
public partial class EasingDemo : PhoneApplicationPage
{
public EasingDemo()
{
InitializeComponent(); this.Loaded += new RoutedEventHandler(AnimationDemo_Loaded);
} void AnimationDemo_Loaded(object sender, RoutedEventArgs e)
{
// 以 代码 的方式增加动画效果 // 画个圆
Ellipse ellipse = new Ellipse();
ellipse.Width = 100d;
ellipse.Height = 100d;
ellipse.Fill = new SolidColorBrush(Colors.Green);
root.Children.Add(ellipse); // 为上面画的圆增加颜色动画效果
ColorAnimation ca = new ColorAnimation();
ca.Duration = TimeSpan.FromSeconds();
ca.From = Colors.Green;
ca.To = Colors.Blue;
ca.AutoReverse = true;
ca.RepeatBehavior = RepeatBehavior.Forever; // 为颜色动画增加缓动效果
EasingFunctionBase easing = new BounceEase();
easing.EasingMode = EasingMode.EaseInOut;
ca.EasingFunction = easing; Storyboard.SetTarget(ca, ellipse);
Storyboard.SetTargetProperty(ca, new PropertyPath("(Ellipse.Fill).(SolidColorBrush.Color)")); Storyboard s = new Storyboard();
s.Children.Add(ca);
s.Begin();
}
}
}

OK
[源码下载]

与众不同 windows phone (17) - Graphic and Animation(画图和动画)的更多相关文章

  1. 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦

    原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...

  2. 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)

    [源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...

  3. 与众不同 windows phone 8.0 & 8.1 系列文章索引

    [源码下载] [与众不同 windows phone 7.5 (sdk 7.1) 系列文章索引] 与众不同 windows phone 8.0 & 8.1 系列文章索引 作者:webabcd ...

  4. 与众不同 windows phone (18) - Device(设备)之加速度传感器, 数字罗盘传感器

    原文:与众不同 windows phone (18) - Device(设备)之加速度传感器, 数字罗盘传感器 [索引页][源码下载] 与众不同 windows phone (18) - Device ...

  5. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  6. 与众不同 windows phone (15) - Media(媒体)之后台播放音频

    原文:与众不同 windows phone (15) - Media(媒体)之后台播放音频 [索引页][源码下载] 与众不同 windows phone (15) - Media(媒体)之后台播放音频 ...

  7. 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

    原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页][源码下载] 与众不同 win ...

  8. 与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载)

    原文:与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载) [索引页][源码下载] 与众不同 windows phone (13) ...

  9. 与众不同 windows phone (12) - Background Task(后台任务)之 PeriodicTask(周期任务)和 ResourceIntensiveTask(资源密集型任务)

    原文:与众不同 windows phone (12) - Background Task(后台任务)之 PeriodicTask(周期任务)和 ResourceIntensiveTask(资源密集型任 ...

随机推荐

  1. 使用adb签名并安装Android程序

    首先需要准备Android SDK包,我是在windows上操作的,在PATH中配置  YOUT_SDK_PATH\android-sdk-windows\platform-tools 和  YOUT ...

  2. 斯坦福大学IOS开发课程笔记(第七课第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发 ...

  3. eclipse、MyEclipse实现批量改动文件编码

    在使用eclipse或MyEclipse编程时,常常遇到部分文件打开后出现乱码的情况(特别是在导入项目后) 1:右击项目选择properties->Resource>Other选择UTF- ...

  4. assert()用法

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:[1] #include <assert.h>void assert( ...

  5. Ext.net.DirectMethods

    http://www.ext.net.cn/forum.php?mod=viewthread&tid=1282&highlight=directmethod DirectMethod ...

  6. keepavlied一些参数

    priority 表示优先级 virtual_ipaddress 虚拟的IP地址(VIP) delay_loop 每个2秒检查一次real_server状态 notify_down 检测到服务down ...

  7. mysq Point类型 查询和插入操作:insert和select

    首先,创建一个表名为geometry2的表,然后增加一个名为gemo的point类型的字段. insert方法有4中,例如以下所看到的://============================== ...

  8. TCP拥塞控制算法内核实现剖析(十)

    内核版本:3.2.12 主要源文件:linux-3.2.12/ net/ ipv4/ tcp_veno.c 主要内容:Veno的原理和实现 Author:zhangskd @ csdn blog 概要 ...

  9. hdu 4861 Couple doubi(数论)

    题目链接:hdu 4861 Couple doubi 题目大意:两个人进行游戏,桌上有k个球,第i个球的值为1i+2i+⋯+(p−1)i%p,两个人轮流取,假设DouBiNan的值大的话就输出YES, ...

  10. JNI 详细解释

    JNI事实上,Java Native Interface缩写,那是,java本地接口.它提供了许多API实现和Java和其它语言的通信(主要是C&C++). 或许不少人认为Java已经足够强大 ...