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"。
依赖: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"。