Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4974686
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: 嵌入式

2010-11-10 10:15:43

以前在玩Silverlight 2.0 的時候,那時候公司對我有一個需求…

就是對使用者的操作結果…進行快照..如果那時候是用Flex 就覺得還好…

但是用Silverlight 2.0 真的是花了我一點時間..

 

那時候作法網路上都是說把XMAL 傳回Server讓Server去做..

那時候我就用很糟糕的做法,就是直接Clone物件,讓他看起來很像是快照..

事實上都是實體物件….這是不好的作法,哥哥情非得已…

 

現在到了4.0這需求重新被提起,想不到卻是輕輕鬆鬆簡單幾行…(翻桌..

 

這案例是有三張圖可以可以隨意地拖動,之後我下面有放一張名為imgSync的Image物件..

即時的去sync你的拖曳狀態… 本文重點在如何做出Snapshot如果您對拖曳的效果有問題..

請參考此篇(Blend 做拖曳超簡單)..

 

畫面物件配置..

cvsSnapShop 是一個Canvas物件..裡面包了三張圖..

imgSync 是一個不被cvsSnapShop 給包住得物件,不然進行快照會被拍到…

 

XAML Code 如下:

		<UserControl
		xmlns=""
		xmlns:x=""
		xmlns:i="" 
		xmlns:ei="" 
		x:Class="DragSample.MainPage"
		Width="640" Height="480">
		 
		<Grid x:Name="LayoutRoot" Background="Black"  Width="640" Height="480"   >
		<Canvas x:Name="cvsSnapShop" MouseMove="SnapShop_MouseMove" >
		<Image HorizontalAlignment="Left" Margin="102,48,0,202" Width="150"  Source="avr.jpg" >
		<i:Interaction.Behaviors>
		<ei:MouseDragElementBehavior/>
		i:Interaction.Behaviors>
		Image>
		 
		<Image HorizontalAlignment="Left"  Width="150"  Source="van.jpg" Canvas.Left="274" Canvas.Top="140">
		<i:Interaction.Behaviors>
		<ei:MouseDragElementBehavior/>
		i:Interaction.Behaviors>
		Image>
		 
		<Image HorizontalAlignment="Right" Margin="0,0,0,0" Width="150"  Source="avr.png" Canvas.Left="60" Canvas.Top="305">
		<i:Interaction.Behaviors>
		<ei:MouseDragElementBehavior/>
		i:Interaction.Behaviors>
		Image>
		Canvas>
		<Image Height="120" HorizontalAlignment="Right" Margin="0,0,0,0" Name="imgSync" Stretch="Fill" VerticalAlignment="Bottom" Width="160" />
		Grid>
		UserControl>

 

接下來…我在對 cvsSnapShop  的MouseMove 寫下事件…

		private void SnapShop_MouseMove(object sender, MouseEventArgs e)
		{
		//可被寫入的Bitmap 
		//在Ctor 時傳入 cvsSnapShop物件
		WriteableBitmap bitmap = new WriteableBitmap(cvsSnapShop, null);
		//顯示快照的結果
		this.imgSync.Source = bitmap;
		}

 

沒錯就是兩行就可以做到這種效果…

真是頗方便及實用的功能..

 

簡單就可以寫出感覺很酷的東西…

要時候那時候就有這東西該多好…(淚奔~~

 

 

範例:(請拖曳下方三張圖)

阅读(992) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~