我想制作一个应用程序,例如this one。该应用程序可以制作带文本的图块。
我发现我无法轻松地在tile中写入文本,因为StandardTileData类没有这样的功能来在tile中写入文本。 StandardTileData类只能设置Title,BackgroundImage,Count等。样本就是这样。
StandardTileData secondaryTile = new StandardTileData
{
BackgroundImage = new Uri("/TileColors..png", UriKind.Relative),
Title = "title",
Count = null,
};
ShellTile.Create(new Uri("/MainPage.xaml?id=1", UriKind.Relative), secondaryTile);
所以,我认为我们可能需要将位图图像包含在文本中。我没有其他好主意。 有谁知道如何从stackpanel制作位图图像?
我的代码是这样的,
<StackPanel Height="173" Width="173" x:Name="TilePanel" Background="Wheat" >
<TextBlock x:Name="tileText" Text="I'd like to add the text to a tile." Style="{StaticResource PhoneTextNormalStyle}" HorizontalAlignment="Left" FontSize="20"/>
</StackPanel>
答案 0 :(得分:1)
也许这个功能会帮助你:
public static void SaveToIsolatedStorage(FrameworkElement element, string file, bool scaled=true)
{
try
{
var bmp = new WriteableBitmap(element, null);
IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
double width = Math.Round(element.ActualWidth * ((double)Application.Current.Host.Content.ScaleFactor / 100f), MidpointRounding.AwayFromZero);
double height = Math.Round(element.ActualHeight * ((double)Application.Current.Host.Content.ScaleFactor / 100f), MidpointRounding.AwayFromZero);
if (!scaled)
{
width = element.ActualWidth;
height = element.ActualHeight;
}
using (var stream = iso.CreateFile(file))
{
bmp.SaveJpeg(stream, (int)width, (int)height, 0, 100);
stream.Close();
}
}
catch
{
}
}
用法:
SaveToIsolatedStorage(uiElement, "uiElement_as_screenshot.jpg");
伊迪丝:我觉得我迟到了,但它可以帮助其他人;)