1

依存関係 : Win2D

バックグラウンド タスクから Livetile イメージを生成しようとしています。ただし、生成された PNG ファイルは透明に見えるだけで、単一のドットはまったく描画されません。

そのため、重要なコードを以下のように簡略化してテストしましたが、結果は変更されませんでした。

輸入しましたMicrosoft.Canvas.Graphics(+Effects,+Text)

Dim device As CanvasDevice = New CanvasDevice()
                Dim width = 150, height = 150

                Using renderTarget = New CanvasRenderTarget(device, width, height, 96)
                    Dim ds = renderTarget.CreateDrawingSession()
                    'ds = DrawTile(ds, w, h)

                    Dim xf As CanvasTextFormat = New CanvasTextFormat()
                    xf.HorizontalAlignment = CanvasHorizontalAlignment.Left
                    xf.VerticalAlignment = CanvasVerticalAlignment.Top
                    xf.FontSize = 12

                    renderTarget.CreateDrawingSession.Clear(Colors.Red)
                    ds.Clear(Colors.Blue)
                    ds.DrawText("hi~", 1, 1, Colors.Black, xf)
                    renderTarget.CreateDrawingSession.DrawText("hi~", 1, 1, Colors.Black, xf)


                    Await renderTarget.SaveAsync(Path.Combine(ApplicationData.Current.LocalFolder.Path, "_tile_150x150.png"))

                End Using

ファイルは作成されますが、赤と青のどちらも含まれていません。テキストは一切ありません。150x150ピクセルのキャンバスのみで透明です。

コードに問題はありますか?または他の理由?

どうもありがとう!

4

1 に答える 1

2

SaveAsync を呼び出す前に、CanvasDrawingSession (サンプルでは「ds」) を閉じる/破棄する必要があります。

"Using ds = renderTarget.CreateDrawingSession()" を使用してこれを行うことができます - SaveAsync の呼び出しを "End Using" の後に置きます。

そこから、「CreateDrawingSession」を複数回呼び出すのではなく、同じ「ds」を使用する必要があります。

于 2015-08-24T16:23:36.617 に答える