在 win2d 中,如何将 DrawRect() 和 DrawTextLayout() 组合成一个 canvasBitmap?

In win2d,how to combine the DrawRect() and DrawTextLayout() into single canvasBitmap?

我的 XAML.Using 中有一个 CanvasControl,我将使用 CanvasDrawingSession.DrawRectangle() 绘制一个矩形。在那个矩形里面,我有一些文本。文本是使用 CanvasDrawingSession.DrawText() 绘制的。我不想单独绘制它,而是想将这个矩形和文本组合成单个图像 (CanvasBitmap/IcanvasImage) 并且我想使用 CanvasDrawingSession.DrawImage() 绘制图像。我知道绘制图像,但我不知道如何将其组合成单个 Image.Is?

您可以先创建一个CanvasRenderTarget,然后在上面绘制Rectangle和文字。之后,将其传递给 DrawImage() 方法来绘制图像。例如:

private void CanvasControl_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
    CanvasDevice device = CanvasDevice.GetSharedDevice();
    CanvasRenderTarget renderTarget = new CanvasRenderTarget(device, 300, 300, 96);
    using (var ds = renderTarget.CreateDrawingSession())
    {
        ds.Clear(Colors.White);
        ds.DrawRectangle(new Rect(50, 50, 200, 150), Colors.Red);
        ds.DrawText("Hello, world!", 100, 100, Colors.Black);
    }

    args.DrawingSession.DrawImage(renderTarget);
}