VB.Net создает изображение в фоновой задаче с помощью 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 пикселей.

Есть ли проблемы с кодом? или любая другая причина?

Большое спасибо!


person klados    schedule 24.08.2015    source источник


Ответы (1)


CanvasDrawingSession ("ds" в вашем образце) должен быть закрыт/удален перед вызовом SaveAsync.

Вы можете использовать «Использование ds = renderTarget.CreateDrawingSession()», чтобы сделать это за вас — поместите вызов SaveAsync после «Завершить использование».

Оттуда вы должны использовать один и тот же «ds», а не вызывать «CreateDrawingSession» несколько раз.

person Damyan    schedule 24.08.2015