Domů » Bleskovky » Renderovanie XAML na Live Tile vo Windows Phone 7

Renderovanie XAML na Live Tile vo Windows Phone 7

Štandardné Windows Phone 7 API umožňuje pri vytváraní Live Tiles zvoliť názov, obrázok prednej a zadnej strany a číselný počet. Obrázky je nutné poskytnúť vo forme Uri. Ak nechcete používať vždy rovnaký statický obrázok ale chcete ho generovať dynamicky, dokonca zo XAML elementov, nie je to žiadny problém.

Pomocou XAML elementov môžete presne vyjadriť obsah obrázka na Live Tile alebo ako Live Tile použiť časť obrazovky, čo sa môže niekedy hodiť. Princíp je jednoduchý, ak chcete ako obrázok na Live Tile použiť napríklad StackPanel s obrázkom:

    StackPanel sp = new StackPanel
    {
    Height = 173,
    Width = 173,
    Background = (SolidColorBrush) Application.Current.Resources[„PhoneBackgroundBrush“]
    ;
     
    Image img = new Image
    {
    Width = 100,
    Height = 100,
    Stretch = Stretch.UniformToFill,
    Source = ,
    VerticalAlignment = VerticalAlignment.Center,
    HorizontalAlignment = HorizontalAlignment.Center
    };
     
    sp.Children.Add(img);

je potrebné najprv vytvoriť novú WriteableBitmap s rozmermi 173×173


    WriteableBitmap wbm = new WriteableBitmap(173, 173);

a následne do nej vykresliť požadovaný XAML obsah

    wbm.Render(sp, null);
    wbm.Invalidate();

Vytvorenú WriteableBitmap následne uložíte do IsolatedStorage

    string sIsoStorePath = @“\Shared\ShellContent\tile.png“;
    using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
    String sDirectory = System.IO.Path.GetDirectoryName(sIsoStorePath);
    if (!appStorage.DirectoryExists(sDirectory))
    {
    appStorage.CreateDirectory(sDirectory);
    }
    using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(sIsoStorePath, System.IO.FileMode.Create, appStorage))
    {
    wbm.SaveJpeg(stream, 173, 173, 0, 100);
    }
    }

a vytvoríte samotnú LiveTile

    ShellTile.Create(new Uri(), new StandardTileData
    {
    Title = this.PageTitle.Text,
    BackgroundImage = new Uri(„isostore:/Shared/ShellContent/tile.png“, UriKind.Absolute)
    });

Tip: Další informace o programování pro Windows Phone & vývojářské serialý najdete na této stránce.

Igor Kulman

avatar
600
  Sledování diskuze  
nejnovější nejstarší nejlépe hodnocené
Upozornit na
matoman
Anonym
matoman

este je mozno dobre, miesto farby pozadia PhoneBackgroundBrush, pouzit nejaku kniznicu co vie priesvitne png a vygenerovat farbu pozadia priesvitnu, potom sa farba bude menit podla aktualnej temy automaticky.. Takto sa zmeni az po update tilu.

Paulos
Anonym
Paulos

To jsem chtěl napsat, ovšem znamená to další závislost, kterých se chceme obvykle zbavovat. Nicméně konverzi zvládnou ImageTools, používám ho u svých Pošt a PSČ.

Martin Suchan
Anonym
Martin Suchan

Elegantnější řešení, jak generovat Live Tiles jako Png obrázky včetně průhlednosti: [odkaz]