wp7启动+幻灯片效果
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;
using System.ComponentModel;
using System.Windows.Media.Imaging; namespace PictureSlide
{
public partial class MainPage : PhoneApplicationPage
{
ImageFrameGroup FrameGroup;
/// <summary>
/// 当前项索引
/// </summary>
public int CurItemIndex { get; set; }
private List<string> ItemData;
/// <summary>
/// 滑动模式
/// </summary>
private TScrollMode ScrollMode = TScrollMode.EBack;
/// <summary>
/// 切换页面移动触发距离
/// </summary>
private const double KMinMoveLen = ;
// 构造函数
public MainPage()
{
InitializeComponent();
// --- 视图数据绑定
this.FrameGroup = new ImageFrameGroup();
this.CanvasImageView.DataContext = this.FrameGroup;
CurItemIndex = ;
ItemData = ImageData.GetImages(); LoadCurImageFrame();
} #region 载入三张图片
private void LoadCurImageFrame()
{
//检查索引合法性,防止快速滑动索引出问题。
CheckIndexValid();
Canvas.SetLeft(CanvasImageView, -);
FrameGroup.MidFrame = LoadImage(ItemData[CurItemIndex]);
if (DataModelNullOrEmpty(CurItemIndex - ))
{
FrameGroup.LeftFrame = LoadImage(ItemData[CurItemIndex - ]);
}
else
{
FrameGroup.LeftFrame = null;
}
if (DataModelNullOrEmpty(CurItemIndex + ))
{
FrameGroup.RightFrame = LoadImage(ItemData[CurItemIndex + ]);
}
else
{
FrameGroup.RightFrame = null;
}
} private ImageSource LoadImage(string ImagePath)
{
try
{
BitmapImage bitmap = new BitmapImage();
bitmap.UriSource = new Uri(ImagePath, UriKind.Relative);
return bitmap;
}
catch (Exception)
{
return null;
}
}
#endregion #region 数据的合法性
/// <summary>
/// 数组数据的合法性
/// </summary>
/// <param name="index"></param>
private bool DataModelNullOrEmpty(int index)
{
return index >= && index < ItemData.Count;
}
#endregion #region 检查图片索引合法性
private void CheckIndexValid()
{
if (CurItemIndex < )
{
CurItemIndex = ;
}
if (CurItemIndex >= ItemData.Count)
{
CurItemIndex = ItemData.Count - ;
}
}
#endregion #region 拖动图片
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
{
if (CanvasImageView.Visibility == Visibility.Collapsed)
return;
double dLeft = Canvas.GetLeft(CanvasImageView);
Canvas.SetLeft(CanvasImageView, dLeft + e.HorizontalChange);
}
#endregion #region 拖动结束
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
{
if (CanvasImageView.Visibility == Visibility.Collapsed)
return;
double velocity = e.HorizontalChange; if (e.Direction != System.Windows.Controls.Orientation.Horizontal)
{
ScrollTo(TScrollMode.EBack, velocity);
}
else if (Math.Abs(velocity) < KMinMoveLen)
{
// --- 回滚
ScrollTo(TScrollMode.EBack, velocity);
}
else
if (e.HorizontalChange > )
{
// --- 前一张
if (DataModelNullOrEmpty(CurItemIndex - ))
{
ScrollTo(TScrollMode.EPreview, velocity);
}
else
{
ScrollTo(TScrollMode.EBack, velocity);
}
}
else
{
// --- 下一张
if (DataModelNullOrEmpty(CurItemIndex + ))
{
ScrollTo(TScrollMode.ENext, velocity);
}
else
{
ScrollTo(TScrollMode.EBack, velocity);
}
}
}
#endregion #region MyRegion
Storyboard storyBoardOperator;
public void ScrollTo(TScrollMode scrollMode, double velocity)
{
ScrollMode = scrollMode;
// --- 终点位置
double endPos = ;
switch (scrollMode)
{
case TScrollMode.EBack:
endPos = -;
break;
case TScrollMode.ENext:
endPos = -;
break;
case TScrollMode.EPreview:
endPos = ;
break;
} double timeSpan = 0.3;
// --- 启动滑动效果 // --- 启动滑动效果
if (storyBoardOperator == null)
{
storyBoardOperator = new Storyboard();
storyBoardOperator.Completed += new EventHandler(Storhboard_Completed);
}
else
{
storyBoardOperator.Stop();
storyBoardOperator.Children.Clear();
} storyBoardOperator.Children.Add(CreateDoubleAnimation(CanvasImageView, timeSpan, endPos, new PropertyPath(Canvas.LeftProperty)));
storyBoardOperator.Begin();
}
/// <summary>
/// 动画完成
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Storhboard_Completed(object sender, EventArgs e)
{
if (ScrollMode == TScrollMode.ENext && CurItemIndex < ItemData.Count - )
CurItemIndex++;
else if (ScrollMode == TScrollMode.EPreview && CurItemIndex > )
CurItemIndex--;
LoadCurImageFrame();
}
#endregion #region 开始拖动
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GestureListener_DragStarted(object sender, DragStartedGestureEventArgs e)
{ }
#endregion #region MyRegion
public DoubleAnimation CreateDoubleAnimation(DependencyObject Dependobj, double timespan, double To, PropertyPath property)
{
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(timespan));
Storyboard.SetTarget(doubleAnimation, Dependobj);
Storyboard.SetTargetProperty(doubleAnimation, property);
doubleAnimation.To = To;
return doubleAnimation;
}
#endregion
}
}
http://files.cnblogs.com/walleyekneel/WP7PictureSlide_ce130e98-d791-46e8-813d-865d7339aa6d.zip
wp7启动+幻灯片效果的更多相关文章
- javascript - 图片的幻灯片效果
javascript 代码: <script type="text/javascript"> function select_play() { var select_p ...
- setTimeout应用 && 自动播放——幻灯片效果&& 自动改变方向——幻灯片效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Codrops 教程:实现内容倾斜的 3D 幻灯片效果
今天给大家分享的优秀教程来自 Codrops 网站,实现一个内容倾斜的 3D 幻灯片效果.我们平常见到的都是那种水平或者垂直滚动的效果,这个倾斜的内容滑动效果相信会让你眼前一亮.因为使用了 CSS 3 ...
- 【jquery】幻灯片效果
闲着无聊,用Jquery写了一个幻灯片效果. 我这人喜欢造轮子,除了jquery这种有强大开发团队的框架级别JS,其实的一些小程序都是尽量自己写. 一是因为怕出问题了没人问,二是自己写的改起来也方便. ...
- bxSlider 在网页里添加幻灯片效果
幻灯片效果在网页上很常见,本文介绍用 bxSlider 轻松实现的方法. bxSlider是什么 bxSlider 是用 JQuery 和 CSS 实现网页中幻灯片效果的工具.可在 http://bx ...
- css+js 控制幻灯片效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 使用CSS实现一个简单的幻灯片效果
方法一: 简单的CSS代码实现幻灯片效果 方法二: 使用CSS3 Animation来制作幻灯片 方法一: 简单的CSS代码实现幻灯片效果 话不多说,直接上代码 <!DOCTYPE html&g ...
- 纯css实现幻灯片效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 一个很好的幻灯片效果的jquery插件--kinMaxShow
在做一些网站时,或多或少的要给网站做幻灯片效果,以前每次做这个效果,都是现成带网上找,找到的很多很杂,而且用完后就不会再理会更加不会去总结代码. 无意中找到了kinMaxShow这个插件,机会满足了我 ...
随机推荐
- 微信小程序之表单提交
页面绑定很多事件! <view class="content"> <view class="user personal_func_list"& ...
- 给安卓端调用的短信发送接口demo
package com.js.ai.modules.pointwall.action; import java.io.IOException; import java.util.HashMap; im ...
- highcharts钻取例子
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- C过程思想,根据需求写方法就行
实现的方法有多种 Comprehensive orientate 2017/10/27 13:25:07 C过程思想,根据需求写方法就行
- ubuntu双网卡准备配置
近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上.这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换. 整体配置不难,网上也 ...
- 使用K2时提示未能加载文件或程序集Microsoft.IdentityModel等
转:http://www.cnblogs.com/dannyli/archive/2012/10/15/2724931.html K2安装成功后,打开workspace管理流程时报错如下图: 未能加载 ...
- webapi help文档 添加测试功能
在做webapi项目的时候 webapi为我们提供了help文档,开发者可以参考这个文档,但是这个文档缺少测试功能,如果加上一个测试的功能就更加方便了 于是就研究了下写了一段代码,代码比较简单,只要将 ...
- Django中favicon.ico文件的配置
默认情况下,浏览器访问一个网站的时候,同时还会向服务器请求“/favicon.ico”这个URL,目的是获取网站的图标. 若没有配置的话,Django就会返回一个404错误,并且浏览器接收到这个404 ...
- Money Systems 货币系统(母函数)
Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],,他们对货币的数值感到好奇. 传统地,一个货币系统是 ...
- Educational Codeforces Round 45 (Rated for Div. 2)
A bracket sequence is a string containing only characters "(" and ")". A regular ...