`
jiasongmao
  • 浏览: 666938 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

silverlight翻转代码

阅读更多
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace slapp002
{
    public enum enumDirection { Up, Down, Left, Right };
    public class cShow3DPlane
    {
        public cShow3DPlane()
        {
            m_IsMoveOverIn = true;
            m_IsMoveOverOut = true;
            m_MoveSpeed = 2;
            sbTimeIn = new Storyboard();
            sbTimeOut = new Storyboard();
            SetTime(10, 10);
            sbTimeIn.Completed += new EventHandler(sbTimeIn_Completed);
            sbTimeOut.Completed += new EventHandler(sbTimeOut_Completed);
        }

        private int m_TimeSpeed1, m_TimeSpeed2, m_MoveSpeed, m_PlaneSpeed, m_InEnd, m_OutEnd;
        private double m_InLocalZ, m_OutLocalZ;
        private PlaneProjection m_pInPlane, m_pOutPlane;
        private Storyboard sbTimeIn, sbTimeOut;
        private enumDirection m_Direction;
        private bool m_IsMoveOverIn, m_IsMoveOverOut;
        //根据方向初始化两个planeProjection的相关值        
        private void InitPlaneData()
        {
            m_pInPlane.RotationX = 0;
            m_pInPlane.RotationY = 0;
            m_pInPlane.RotationZ = 0;
            m_pInPlane.CenterOfRotationX = 0.5;
            m_pInPlane.CenterOfRotationY = 0.5;
            m_pInPlane.CenterOfRotationZ = 0;
            m_pOutPlane.RotationX = 0;
            m_pOutPlane.RotationY = 0;
            m_pOutPlane.RotationZ = 0;
            m_pOutPlane.CenterOfRotationX = 0.5;
            m_pOutPlane.CenterOfRotationY = 0.5;
            m_pOutPlane.CenterOfRotationZ = 0;
            m_pOutPlane.LocalOffsetZ = m_OutLocalZ;
            m_pOutPlane.GlobalOffsetZ = -m_OutLocalZ;
            m_pInPlane.LocalOffsetZ = m_InLocalZ;
            m_pInPlane.GlobalOffsetZ = -m_InLocalZ;
            switch (m_Direction)
            {
                case enumDirection.Up:
                    m_pInPlane.RotationX = -90;
                    m_InEnd = 0;
                    m_pOutPlane.RotationX = 0;
                    m_OutEnd = 90;
                    m_PlaneSpeed = m_MoveSpeed;
                    break;
                case enumDirection.Down:
                    m_pInPlane.RotationX = 90;
                    m_InEnd = 0;
                    m_pOutPlane.RotationX = 0;
                    m_OutEnd = -90;
                    m_PlaneSpeed = -m_MoveSpeed;
                    break;
                case enumDirection.Left:
                    m_pInPlane.RotationY = 90;
                    m_InEnd = 0;
                    m_pOutPlane.RotationY = 0;
                    m_OutEnd = -90;
                    m_PlaneSpeed = -m_MoveSpeed;
                    break;
                case enumDirection.Right:
                    m_pInPlane.RotationY = -90;
                    m_InEnd = 0;
                    m_pOutPlane.RotationY = 0;
                    m_OutEnd = 90;
                    m_PlaneSpeed = m_MoveSpeed;
                    break;
            }
        }

        public void Begin()
        {
            m_IsMoveOverIn = false;
            m_IsMoveOverOut = false;
            sbTimeIn.Begin();
            sbTimeOut.Begin();
        }

        //设置进入和离开对象        
        public void SetInOutPlane(Grid gridIn, Grid gridOut, enumDirection eDirection)
        {
            m_pInPlane = new PlaneProjection();
            m_pOutPlane = new PlaneProjection();
            gridIn.Projection = m_pInPlane;
            gridOut.Projection = m_pOutPlane;
            if (eDirection == enumDirection.Left || eDirection == enumDirection.Right)
            {
                m_InLocalZ = gridIn.ActualWidth / 2;
                m_OutLocalZ = gridOut.ActualWidth / 2;
            }
            else
            {
                m_InLocalZ = gridIn.ActualHeight / 2;
                m_OutLocalZ = gridOut.ActualHeight / 2;
            }
            m_Direction = eDirection;
            InitPlaneData();
        }

        //重载       
        public void SetInOutPlane(System.Windows.Controls.Control controlIn, System.Windows.Controls.Control controlOut, enumDirection eDirection)
        {
            m_pInPlane = new PlaneProjection();
            m_pOutPlane = new PlaneProjection();
            controlIn.Projection = m_pInPlane;
            controlOut.Projection = m_pOutPlane;
            if (eDirection == enumDirection.Left || eDirection == enumDirection.Right)
            {
                m_InLocalZ = controlIn.ActualWidth / 2;
                m_OutLocalZ = controlOut.ActualWidth / 2;
            }
            else
            {
                m_InLocalZ = controlIn.ActualHeight / 2;
                m_OutLocalZ = controlOut.ActualHeight / 2;
            }
            m_Direction = eDirection;
            InitPlaneData();
        }

        public bool MoveOver()
        {
            if (!m_IsMoveOverIn || !m_IsMoveOverOut)
                return false;
            else return true;
        }

        //设置进入和离开动画的速度   
        public void SetTime(int timeSpeed1, int timeSpeed2)
        {
            m_TimeSpeed1 = timeSpeed1;
            m_TimeSpeed2 = timeSpeed2;
            sbTimeIn.Duration = new Duration(TimeSpan.FromMilliseconds(m_TimeSpeed1));
            sbTimeOut.Duration = new Duration(TimeSpan.FromMilliseconds(m_TimeSpeed2));
        }

        //离开对象的动画     
        void sbTimeOut_Completed(object sender, EventArgs e)
        {
            //throw new NotImplementedException();          
            if (m_Direction == enumDirection.Left || m_Direction == enumDirection.Right)
            {
                m_pOutPlane.RotationY += m_PlaneSpeed;
                if (m_pOutPlane.RotationY == m_OutEnd) m_IsMoveOverOut = true;
            }
            if (m_Direction == enumDirection.Up || m_Direction == enumDirection.Down)
            {
                m_pOutPlane.RotationX += m_PlaneSpeed;
                if (m_pOutPlane.RotationX == m_OutEnd) m_IsMoveOverOut = true;
            }
            if (!m_IsMoveOverOut) sbTimeOut.Begin();
            else
            {
                m_pOutPlane.LocalOffsetZ = 0;
                m_pOutPlane.GlobalOffsetZ = 0;
            }
        }

        //进入对象的动画     
        void sbTimeIn_Completed(object sender, EventArgs e)
        {
            //throw new NotImplementedException();     
            if (m_Direction == enumDirection.Left || m_Direction == enumDirection.Right)
            {
                m_pInPlane.RotationY += m_PlaneSpeed;
                if (m_pInPlane.RotationY == m_InEnd) m_IsMoveOverIn = true;
            }
            if (m_Direction == enumDirection.Up || m_Direction == enumDirection.Down)
            {
                m_pInPlane.RotationX += m_PlaneSpeed;
                if (m_pInPlane.RotationX == m_InEnd) m_IsMoveOverIn = true;
            }
            if (!m_IsMoveOverIn) sbTimeIn.Begin();
            else
            {
                m_pInPlane.LocalOffsetZ = 0;
                m_pInPlane.GlobalOffsetZ = 0;
            }
        }
    }

}

 

 

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.DataVisualization.Charting;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace slapp002
{
	public partial class MainPage : UserControl
	{
        private cShow3DPlane c3d = new cShow3DPlane();
        private Grid gridCur = new Grid();
		public MainPage()
		{
			// Required to initialize variables
			InitializeComponent();

		}

		private void rightbt_Click(object sender, System.Windows.RoutedEventArgs e)
		{
            if (c3d.MoveOver())
            {
                c3d.SetInOutPlane(linechart, colchart, enumDirection.Right);
                //gridCur = gridUp;
                c3d.Begin();
            }

		}

		private void upbt_Click(object sender, System.Windows.RoutedEventArgs e)
		{
            if (c3d.MoveOver())
            {
                c3d.SetInOutPlane(linechart, colchart, enumDirection.Up);
                //gridCur = gridUp;
                c3d.Begin();
            }
		}

		private void leftbt_Click(object sender, System.Windows.RoutedEventArgs e)
		{
            if (c3d.MoveOver())
            {
                c3d.SetInOutPlane(linechart, colchart, enumDirection.Left);
                //gridCur = gridUp;
                c3d.Begin();
            }
        }

		private void downbt_Click(object sender, System.Windows.RoutedEventArgs e)
		{
            if (c3d.MoveOver())
            {
                c3d.SetInOutPlane(linechart, colchart, enumDirection.Down);
                //gridCur = gridUp;
                c3d.Begin();
            }
        }

		private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
		{
			

		}
	}
}

 

 

<UserControl
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:slapp002_Control="clr-namespace:slapp002.Control" xmlns:local="clr-namespace:slapp002" mc:Ignorable="d"
	x:Class="slapp002.MainPage"
	Width="640" Height="480" Loaded="UserControl_Loaded">

	<Grid x:Name="LayoutRoot" Background="White" >
		<Grid.RowDefinitions>
			<RowDefinition Height="0.152*"/>
			<RowDefinition Height="0.848*"/>
		</Grid.RowDefinitions>
		<Button Content="上" x:Name="upbt" Height="26" Margin="265,8,289,0" VerticalAlignment="Top" Click="upbt_Click"/>
		<Button Content="左" x:Name="leftbt" Margin="162,29,0,18" HorizontalAlignment="Left" Width="86" Click="leftbt_Click"/>
		<Button Content="右" x:Name="rightbt" Margin="0,29,163,18" HorizontalAlignment="Right" Width="86" Click="rightbt_Click"/>
		<Button Content="下" x:Name="downbt" Margin="265,0,289,0" Height="26" VerticalAlignment="Bottom" Click="downbt_Click"/>
		
		<slapp002_Control:ColumnChartControl Name="colchart" Margin="0,0,0,0" Grid.Row="1"/>
		
		<local:LineChartControl Margin="0" Name="linechart" Grid.Row="1"/>
		
	</Grid>
</UserControl>

 

分享到:
评论

相关推荐

    silverlight 翻转效果 纯动画

    在本文中,我们将深入探讨如何在Silverlight中实现翻转效果,完全依赖于动画而无需任何后台代码。这种技术对于那些希望在用户界面中添加动态交互元素,尤其是按钮切换效果的开发者来说,是非常有用的。 首先,...

    Silverlight登陆注册翻转

    项目文件GHRQPrj可能包含了这个翻转效果实现的所有源代码,包括XAML文件(用于定义UI)、C#或VB.NET文件(用于编写业务逻辑和事件处理)以及可能的动画资源文件。通过分析这些文件,开发者可以学习到如何在...

    silverlight控件实现立体翻转效果

    在本文中,我们将深入探讨如何使用Silverlight控件来实现立体翻转效果。Silverlight是一种由微软开发的富客户端技术,用于创建具有丰富媒体体验和交互性功能的Web应用程序。结合Visual Studio 2010和Blend 4,开发者...

    silverlight2.0 移动鼠标图片自动翻转程序

    《Silverlight 2.0:实现鼠标移动时的图片翻转效果》 在Web开发领域,Silverlight 2.0是一款强大的工具,它允许开发者创建丰富的、交互式的媒体和应用程序,提供了一种全新的方式来展示内容。本篇文章将深入探讨...

    Silverlight behavior 无代码实现倒影效果无代码实现倒影效果

    在本文中,我们将深入探讨如何在Silverlight应用中利用Behavior机制无代码地实现倒影效果。Silverlight是一款由Microsoft开发的强大的RIA(Rich Internet Application)框架,它允许开发者创建具有丰富用户界面的Web...

    Silverlight页面翻转导航

    提供的文件"Silverlight-Page-Flip-Navigation.pdf"可能包含了详细的步骤和示例代码,帮助开发者理解并实现Silverlight中的页面翻转导航。"LogOn.aspx?rp=%2FKB%2Fsilverlight%2FPageFlipNavigation%2...

    Silverlight超酷翻页实例

    【Silverlight超酷翻页实例】是一个利用Microsoft Silverlight技术实现的创新性用户界面效果,主要涉及到了网页中页面的动态翻转展示。Silverlight是微软推出的一种RIA(Rich Internet Application)开发框架,用于...

    WPF和Silverlight翻书效果源代码

    **WPF(Windows Presentation Foundation)和Silverlight是微软开发的两种不同的UI框架,主要用于构建丰富的桌面和网络应用程序。本文将深入探讨这两种技术实现的“翻书”效果,并结合提供的源代码进行解析。** **...

    silverlight WP7 翻页效果

    这个文件名可能是示例代码或资源文件,其中可能包含了实现翻页效果的具体代码和图形资源。在实际开发中,开发者通常会创建一个自定义控件,封装翻页逻辑,以便在多个地方复用。 6. **优化与性能**: 考虑到移动...

    silverlight制作超炫超酷图片旋转动画效果的示例代码

    在本文中,我们将深入探讨如何使用Silverlight技术来创建一个超炫超酷的图片旋转动画效果。Silverlight是Microsoft推出的一种强大的RIA(Rich Internet Application)开发框架,它允许开发者创建丰富的交互式用户...

    使用Silverlight实现特效

    在实现"Silverlight翻书效果"这个项目时,你可能需要根据文件列表中的"Silverlight翻书效果"来分析源代码,理解各个部分是如何协同工作的。这可能包括XAML文件(定义UI布局和动画),C#后台代码(处理逻辑和事件),...

    四款漂亮的控件风格(Silverlight)源码

    利用这个控件就可以很方便的实现以前需要写不少JavaScript代码实现的状态翻转的功能 Slider控件:Slider控件是一个非常重要的控件,特别是对网络多媒体播放器来说是必不可少的 其有几个比较重要的属性:  Value...

    Silverlight 中文教程(PPT)

    通过学习这个教程,开发者可以掌握如何利用Silverlight统一服务器、Web和桌面的功能,融合托管代码和动态语言、声明性编程与传统编程,以及Windows Presentation Foundation (WPF)的功能。 讲座人章立民是资深的...

    silverlight书页翻动特效

    书页翻动特效通常会用到旋转、缩放和透明度变化等动画来模拟纸张的翻转动作。 2. **3D变换**:为了实现逼真的翻页效果,Silverlight的3D变换功能必不可少。通过TranslateTransform3D、RotateTransform3D等类,可以...

    silverlight trigger

    在IT行业中,Silverlight是一种已过时的但曾经广泛使用的富客户端开发技术,主要用于构建交互式的Web应用程序。它提供了一种强大的方式来扩展WPF(Windows Presentation Foundation)的功能到Web浏览器中。在...

    Silverlight1.0实例下载-〖翻页效果〗

    在压缩包中的“pageturn”文件,很可能是包含这个实例项目的源代码和资源文件。通过分析这些文件,开发者可以深入理解翻页效果的具体实现方式,学习如何将Silverlight1.0的动画和媒体功能运用到实际项目中。 总结来...

    WPF和Silverlight的BookControls源码

    1. **XAML语法**:与WPF类似,Silverlight也使用XAML语言来描述UI布局,BookControls的XAML代码会定义控件的结构和样式。 2. **动画和转换**:Silverlight提供了类似的动画和转换功能,BookControls的翻页动画将在...

Global site tag (gtag.js) - Google Analytics