VB.Net 使用 Win2d 在后台任务中制作图像

VB.Net make a image in background task using Win2d

依赖: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 像素 canvas。

代码有问题吗?还是其他原因?

非常感谢!

CanvasDrawingSession(您的示例中的 "ds")需要在调用 SaveAsync 之前关闭/处置。

您可以使用 "Using ds = renderTarget.CreateDrawingSession()" 为您执行此操作 - 在 "End Using" 之后调用 SaveAsync。

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