private async Task<String> GenerateWideIconWithCity(string city)
{
string filename = city + ".png";
try
{
var pkgFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var assetsFolder = await pkgFolder.GetFolderAsync("Assets");
var xamlFile = await assetsFolder.GetFileAsync("cityTile.xml");
var xamlContent = await FileIO.ReadTextAsync(xamlFile);
Windows.UI.Xaml.FrameworkElement drawRoot = (FrameworkElement)XamlReader.Load(xamlContent);
Image image = (Image)drawRoot.FindName("Image");
TextBlock name = (TextBlock)drawRoot.FindName("Name");
image.Source = new BitmapImage(new Uri("ms-appx:///Assets/city/" + city.ToLower() + ".jpg"));
name.Text = city;
RenderTargetBitmap rtb = new RenderTargetBitmap();
await rtb.RenderAsync(drawRoot, 280, 140);
var buffer = await rtb.GetPixelsAsync();
byte[] outputArray = buffer.ToArray();
var localFolder = ApplicationData.Current.LocalFolder;
var rtbData = await localFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
using (var rtbStream = await rtbData.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, rtbStream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)rtb.PixelWidth, (uint)rtb.PixelHeight, 96, 96, outputArray);
await encoder.FlushAsync();
}
}
catch (Exception ex)
{
var s = ex.Message;
filename = null;
}
return filename;
}
}