1

アプリケーション内からタイルを生成していますが、タイルの基礎として使用している背景画像を表示すると、透明度が失われます (したがって、テーマの色が選択されません)。

背景画像にはアイコンがあり、透明です-標準のタイルとして使用する場合(つまり、画像を生成しない場合)、その問題はなく、透明度はすべて良好です..

しかし、それを背景画像として使用し、その上に独自のコンテナを追加すると、透明ではなく背景が黒く表示されます。

関連するコードは次のとおりです。

    // [...]
    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の作成で透明度が失われています。

何か案は?

  • ありがとう
4

1 に答える 1