發表文章

目前顯示的是 8月, 2009的文章

Silverlight 3 當中的EasingFunction

圖片
EasingFunction是SL3當中針對動畫機制加上的特效處理,如同Effect一樣,SL3當中內建了基本的一些功能,當然開發人員也可以繼承基底類別開發自己的EasingFunction,我們先來看如何使用。 Dim sb As New Storyboard Dim da As New DoubleAnimation da.From = 0 da.To = 350 da.Duration = New TimeSpan(0, 0, 3) Storyboard.SetTarget(da, ellipse2) Storyboard.SetTargetProperty(da, New PropertyPath(Canvas.TopProperty)) sb.Children.Add(da) sb.Begin() 上面這段程式碼用來動態建立一段動畫,並且讓動畫發生在一個圓球物件(ellipse2)上,這段動畫很簡單,在三秒內,讓圓球從上往下墜落,沒什麼特別的。 但是一旦加上EasingFunction: '設定EasingFunction da.EasingFunction = New BounceEase With {.Bounces = 10, .Bounciness = 2, .EasingMode = EasingMode.EaseOut} 動畫就將大大不同,球體(ellipse2)墜落動作變成具有彈跳性: 從這邊我們可以知道,透過設定DoubleAnimation的EasingFunction 屬性,我們可以指定特定的效果給動畫,而BounceEase就是效果之一,其位於System.Windows.Media.Animation命名空間之下。您可以在該命名空間下找到其他更多的效果,如前所述,您也可以繼承EasingFunctionBase類別建立自己的EasingFunction特效。

Silverlight 3中的bitmap API

圖片
SL3中的Bitmap API,是影像處理的基礎,它讓我們得以直接在記憶體中建立一個點陣圖畫布,使用的方法很簡單,直接透過Imaging底下的WriteableBitmap即可: Dim wBitmap As New System.Windows.Media.Imaging.WriteableBitmap(…) 建構函式有三種呼叫方式,可隨您的需要使用: WriteableBitmap(影像來源BitmapSource) WriteableBitmap(寬Int32,高Int32) WriteableBitmap(任何物件UIElement, Transform物件) 例如,底下的程式碼將會建立一張空白的畫布在記憶體中: Dim wBitmap As New System.Windows.Media.Imaging.WriteableBitmap(640,480) 而WriteableBitmap物件的Pixels屬性則可以讓我們設定點陣圖的影像: wBitmap.Pixels(y * wBitmap.PixelHeight + x) = pixel 而上面的Pixel則可以透過底下這樣的方式計算出來: Dim brg As Byte() = New Byte(3) {} 'Blue, B brg(0) = CByte(color.B) 'Green, G brg(1) = CByte(color.G) 'Red, R brg(2) = CByte(color.R) '透明度 brg(3) = color.A Dim pixel As Integer = BitConverter.ToInt32(brg, 0) 透過這樣的方式,您可以很輕易的建立出類似底下這樣的影像雜點效果: