2012年4月25日 星期三

動態產生圖片 Create Bitmap Dynamically in Windows Phone 7

緣起:
為了更改ShellTile的格式, 觀察到只可能從一個地方著手,
就是StandardTileData ,
這時候觀察他是繼承父類ShellTileData而來的,
所以這時候想說是否可以繼承ShellTileData 建立一個自己的ShellTileData,
從而改變ShellTile的格式.
但是這個嘗試失敗了, 至於失敗的原因..用過就知道了, 但也很有可能是小弟功力不足所致

這時候想了想 StandardTileData 裡面有兩個參數
分別是 BackgroundImage 以及BackBackgroundImage
想說是否可以動態產生圖片 讓他們來使用?

這時查到了一個叫做WriteableBitmap的東西 貌似可以使用
所以著手寫了一個小Demo
付上源代碼:


            Canvas canvas = new Canvas ();
            canvas.Width = 173;
            canvas.Height = 173;

            ImageBrush brush = new ImageBrush ();
            BitmapImage image = new BitmapImage ();
            image.UriSource = new Uri ("/MyDemos;component/Resource/haha.png", UriKind.RelativeOrAbsolute);
            
            image.CreateOptions = BitmapCreateOptions.None;


            brush.ImageSource = image;
            canvas.Background = brush;



            TextBlock block = new TextBlock ();
            block.Width = 100;
            block.Height = 100;
            block.TextAlignment = TextAlignment.Center;

            block.FontSize = 50;

            block.Text = "Maca";


            canvas.Children.Add (block);

            WriteableBitmap backgroundImage = new WriteableBitmap (173, 173);
            backgroundImage.Render (canvas, null);
            backgroundImage.Invalidate ();


            image1.Source = backgroundImage;




效果圖:


至於如何變成圖檔可以參考
http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.extensions.savejpeg(v=vs.92).aspx

沒有留言:

張貼留言