[WindowsPhone] 動態製作圖片至IsolatedStorage,並更新磁貼
我們來聊一下,有關於如何在App中動態製作一張圖,並且更新現在的磁貼,主要要說的觀念在於如何建立一張圖片,
並且放入置IsolatedStorage之後,讓磁貼還可以讀到那張圖合成出來的圖片,案例說明:
在 txtMain(TextBox物件) 輸入文字後,會自動更新 tbMainText(TextBlock),之後按下,製作中圖的按鈕,在按下更換Tile後,會把現在系統預設的Tile給更新
首先我們會用到這篇文章(關於Isolated Storage中存取讀取圖片)的概念,將物件拍下來放入置IsolatedStorage中。
C# Code:
/// <summary>
/// 製作縮圖至IsolatedStoarge
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnMakeMedium_Click(object sender, RoutedEventArgs e)
{
//請注意路徑,因為要讓磁貼讀到此圖片路徑 所以你必須放在 \Shared\ShellContent\檔名
SaveImageToIsolatedStorage(new WriteableBitmap(GridSnap, null), @"\Shared\ShellContent\FlipCycleTileMedium.jpg", 0, 100);
}
/// <summary>
/// 存圖片至Isolated Storage
/// </summary>
/// <param name="wb"></param>
/// <param name="fileName"></param>
/// <param name="orientation"></param>
/// <param name="quality"></param>
public static void SaveImageToIsolatedStorage(WriteableBitmap wb, string fileName, int orientation = 0, int quality = 70)
{
var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
if (isolatedStorage.FileExists(fileName))
isolatedStorage.DeleteFile(fileName);
var fileStream = isolatedStorage.CreateFile(fileName);
wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, orientation, quality);
fileStream.Close();
}
其中請注意路徑,因為要讓磁貼讀到此圖片路徑 所以你必須放在 \Shared\ShellContent\檔名,在其中案例我就是將GridSnap這物件給進行快照,因為她包了圖片還有tbMainText(TextBlock)
再來就是更新磁貼的部分,因為重點不在於介紹磁貼,所以我用最簡單的方式撰寫,相關文章可以參考
MSDN :http://msdn.microsoft.com/en-us/library/windowsphone/design/jj662926(v=vs.105).aspx
Pou http://www.dotblogs.com.tw/pou/archive/2012/12/22/85883.aspx
更新磁貼C# Code:
/// <summary>
/// 置換現在的Tile圖片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnChangeTile_Click(object sender, RoutedEventArgs e)
{
ShellTile sysTile = ShellTile.ActiveTiles.FirstOrDefault();
var standTile = new StandardTileData();
standTile.BackgroundImage = new Uri(@"isostore:/Shared/ShellContent/FlipCycleTileMedium.jpg", UriKind.Absolute);
standTile.Title = "Sample";
if (sysTile != null) sysTile.Update(standTile);
}
其中請注意,讀取的方式為 isostore:/Shared/ShellContent/檔名,這點必須注意
結果:
我們換換其他文字:
Source:
標籤:
C#
,
Silverlight
,
WindowsPhone
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...