Kod
Oto mała metoda, która zapisze kontrolkę (która ma być użyta jako Live Tile), a następnie zwróci ścieżkę do pliku w Isolated Storage. Tą ścieżkę następnie musimy dodać do StandardTileData we właściwości BackgroundImage.
I to tyle - obrazkowy kafelek powinien pojawić się na ekranie głównym telefonu! Warto również potestować nazwę kafelka, bo mam wrażenie że raz na jakiś czas nie odświeża się na WP8, a więc można tak zmienić poniższy kod, aby nazwa pliku była generowana z GUID-em. Oczywiście wówczas należy kasować wszystkie nieużywane kafelki, żeby niepotrzebnie nie zużywać pamięci telefonu.
public static string SaveTileToJpeg(UIElement customTile, string filename = "CustomTile.jpg", int width = 336, int height = 336, int quality = 95)
{
string dir = "Shared/ShellContent";
string filePath = dir + "/" + filename;
customTile.UpdateLayout();
customTile.Measure(new Size(width, height));
customTile.UpdateLayout();
customTile.Arrange(new Rect(0, 0, width, height));
var bmp = new WriteableBitmap(width, height);
bmp.Render(customTile, null);
bmp.Invalidate();
var myStore = IsolatedStorageFile.GetUserStoreForApplication();
if (!myStore.DirectoryExists(dir))
{
myStore.CreateDirectory(dir);
}
using (IsolatedStorageFileStream myFileStream = myStore.CreateFile(filePath))
{
bmp.SaveJpeg(myFileStream, bmp.PixelWidth, bmp.PixelHeight, 0, quality);
myFileStream.Close();
}
return "isostore:" + filePath;
}
A oto przykładowy efekt:
Pomocne linki:

Brak komentarzy:
Prześlij komentarz