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”)。

您可以使用“使用 ds = renderTarget.CreateDrawingSession()”为您执行此操作 - 在“结束使用”之后调用 SaveAsync。

从那里你应该使用相同的“ds”而不是多次调用“CreateDrawingSession”。

于 2015-08-24T16:23:36.617 回答