アプリケーション内からタイルを生成していますが、タイルの基礎として使用している背景画像を表示すると、透明度が失われます (したがって、テーマの色が選択されません)。
背景画像にはアイコンがあり、透明です-標準のタイルとして使用する場合(つまり、画像を生成しない場合)、その問題はなく、透明度はすべて良好です..
しかし、それを背景画像として使用し、その上に独自のコンテナを追加すると、透明ではなく背景が黒く表示されます。
関連するコードは次のとおりです。
// [...]
var container = new Grid();
if (isWide)
{
container = CreateContainerWide(tileInfo);
}
else
{
container = CreateContainerMedium(tileInfo);
}
// Add the background
container.Background = new ImageBrush
{
ImageSource = background,
Opacity = opacity
};
// Force the container to render itself
container.Arrange(new Rect(0, 0, width, height));
// Write the image to disk and return the filename
return WriteShellTileUIElementToDisk(container, baseFileName);
}
static string WriteShellTileUIElementToDisk(UIElement element, string baseFileName)
{
var wb = new WriteableBitmap(element, null);
// All content must be in this sub-folder of IsoStore
string fileName = SharedImagePath + baseFileName + ImageExtension;
var stream = new IsolatedStorageFileStream(fileName, System.IO.FileMode.Create, Isf);
// Write the JPEG using the standard tile size
// Sometimes the bitmap has (0,0) size and this fails for unknown reasons with an argument exception
if (wb.PixelHeight > 0)
wb.SaveJpeg(stream, wb.PixelWidth, wb.PixelHeight, 0, JpegQuality);
else
{
Debug.WriteLine("Can't write out file because bitmap had 0,0 size; not sure why");
// indicate that there is an issue
fileName = null;
}
stream.Close();
// Return the filename
return fileName;
}
ImageBrush の Opacity を何に設定しても、違いはないようです。
透明なレイヤーよりも単色を使用した場合は、すべて問題ありません。どういうわけかpngの作成で透明度が失われています。
何か案は?
- ありがとう