博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wpf+.net 4.5 surface2.0 = 异步多点触控 时间轴 part1
阅读量:4881 次
发布时间:2019-06-11

本文共 4130 字,大约阅读时间需要 13 分钟。

直接贴代码 废话不多说了。

运行环境  vs11 beta  framework4.5
surface runtime  surface sdk 2.0
多点触控模拟器 multitouchVista 或多点触控设备
源码请关注我的资源下载
功能说明: 多点触控时间轴,事件可缩放 旋转  多点同时操作 放大缩小等,

时间范围0001-9980年 定位精确到天

时间轴数据加载格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<data>
  <event imgUrl="Sample_Photos"
         start="2011/1/05"
         mediaUrl ="C:\Resources\Video\test.mp4"
         type="2"
         title="苹果"
        >
   iphone4s

  </event>

</data>

 

主控件 1   XAML:

 

主控件背后代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using System.Xml.Linq;namespace Transvalue.Timeline{    ///     /// TransvalueTimeline.xaml 的交互逻辑    ///     public partial class TransvalueTimeline : UserControl    {        public TransvalueTimeline()        {            InitializeComponent();            var data = from item in XElement.Load("Data.xml").Elements("event")                       let title = item.Attribute("title")                       let content = item.Attribute("content")                       let date = item.Attribute("start")                       let imgUrl = item.Attribute("imgUrl")                       let mediaUrl = item.Attribute("mediaUrl")                       let type = item.Attribute("type")                       select new TimelineEventItem                       {                           Title = title.Value,                           Content = item.Value,                           Date = Convert.ToDateTime(date.Value),                           MedieUrl = mediaUrl.Value,                           ImgUrl = imgUrl.Value,                           EventType = (TimelineEventEnum.TimelineEventType)Convert.ToInt32(type.Value)                       };            this.timeline.TimelineEventSource =                new System.Collections.ObjectModel.ObservableCollection
(data.OrderBy(item => item.Date)); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { timeline.LoadComplatedEH += LoadCompletedEvent; timeline.LoadingEH += LoadingEvent; timeline.ShowScatterEH += ((o, args) => { this.ShowMdiWindow(args.svi); }); } private async void LoadCompletedEvent(object sender, EventArgs e) { await Task.Factory.StartNew(() => { svContent.Children.Clear(); this.glowWorm.Visibility = System.Windows.Visibility.Hidden; }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); } private async void LoadingEvent(object sender, EventArgs e) { await Task.Factory.StartNew(() => { this.glowWorm.Visibility = System.Windows.Visibility.Visible; }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); } private void ShowMdiWindow(UIElement svi) { Console.WriteLine(svi.GetType().BaseType.Name); if (svi.GetType().BaseType.Name.Equals("UserControl")) { Canvas.SetTop(svi, svContent.Height / 2); Canvas.SetLeft(svi, svContent.Width / 2); svContent.Children.Add(svi); } else { Window win = svi as Window; win.ManipulationStarting += ((sender, e) => { Console.WriteLine("开始多点操作"); e.Manipulators.ForEach(i => Console.WriteLine(i)); }); win.Show(); } } }}

 

转载于:https://www.cnblogs.com/wangrenzhu/archive/2012/05/24/2766830.html

你可能感兴趣的文章
解决WordPress后台安装主题、插件图片不显示的问题
查看>>
Maven私服的搭建
查看>>
图片向上切换
查看>>
Python json 读取 json 文件并转为 dict
查看>>
repeater实现多列显示
查看>>
6、lvs使用进阶(02)
查看>>
C#之WPF连接sqllite数据库
查看>>
Windows存储管理之磁盘类型简介
查看>>
道宝演讲培训总结
查看>>
Constructors
查看>>
LeetCode--11_Container_With_Most_Water
查看>>
Java类加载原理解析(转)
查看>>
CInternetSession的简单使用
查看>>
《梦断代码》读书笔记
查看>>
正在合并
查看>>
css列表
查看>>
【miscellaneous】单播、广播和多播IP地址
查看>>
【计算机视觉】纹理特征之LBP局部二值化模式
查看>>
mysql的索引详解
查看>>
次短路
查看>>