silverlight 相簿雛型

來源:互聯網
上載者:User

這篇應該是"silverlight3的"偽"3D續--圖片橫向輪換"的後續篇章,代碼基本上從上篇代碼修改而來,介面則抄襲了nasa的相簿,自己一直做資料庫相關的電子商務開發,雖然斷斷續續學習了一陣silverlight,但對RIA開發還沒找著感覺,基本上仍處於從asp.net程式員看silverlight的初級階段,這個權當練手,廢話不多說,直接看:

示範地址:
http://images.24city.com/jimmy/album/default.html

 

基本技術點:

1.利用webclient動態載入xml來擷取程式配置以及資料來源

2.利用webclient非同步讀取大圖片內容,以達到大圖載入的loading效果

3.利用SizeChanged事件重新置放各元素中心點位置(結合ActualHeight,ActualWeight)

4.下面導航小圖片區,基本上可以分成三部分:

 4.1當前圖(即下面一排圖片中的綠色圖)--始終定位於容器(canvas)的中心點
 4.2當前圖左邊的圖片(利用y軸,z軸旋轉後並排在一起,形成立體堆疊效果)
 4.3當前圖右側的圖片(同4.2,只是y軸,z軸角度轉成負值而已,以達到左右對稱)

 至於布局演算法,大家各顯神通吧,達到效果就好,在這個例子裡My Code也只是想著如何?而已(屬於最低級原始層次),不具備啥參考意義(歡迎大家提出更好的排列演算法)

這裡再給出一個樣本結構圖,有助於理解各元素水平位置的分布(為了更直接,刻意把各元素垂直錯開了)

5.小圖點擊後,小圖片整體移動的效果實現:

 基本上這是一個視覺假象,把圖片最外層的視窗cavas應用一個storyboard,讓canvas的x座標相對變化即可,因為所有小圖片都在容器裡,所以看上去也就整體跟著移動了,但是有一個問題,動畫放一次後,會停在新的x座標上(AutoReverse設定為false的前提下),下次再播放就動不了(因此起始x值一樣了,相當於沒移動)

 所以在動畫的Completed事件裡,我用代碼又強制把canvas容器的x值複原了(為了是下次可以繼續播放),同時再次調用第"4"點中所提到的布局演算法重新布局,因為代碼的執行只在一瞬間,所以肉眼根本看不出這點小動作。

 這樣之後,基本上就能實現點擊移動切換功能了,但是效果很單調,為了將導航區的當前大圖慢慢縮小,同時被點擊的小圖慢慢放大,再同時伴隨一些角度的姿態調整,在小圖的點擊事件ItemClick裡,我又嘗試了寫了N多垃圾代碼,如果您細心看,能看到一些小變化(不過這些小變化自我感覺仍舊很生硬,不連貫,也歡迎大家提出更有效更簡單的解決辦法)

 

原始碼下載:http://files.cnblogs.com/yjmyzz/Album.rar

 

代碼配置說明:

用vs2008 sp1開啟後,web目錄下建立一個img目錄,參照data/img.xml裡的內容,自己找些圖片複製到img目錄中就可以了.

 

[2009/11/08更新]加入了DeepLink支援

 

轉載請註明來自 菩提樹下的楊過

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.