在win2d中,如何将DrawRect()和DrawTextLayout()合并到单个canvasBitmap中?

问题描述 投票:0回答:1

我的XAML中有一个CanvasControl。使用CanvasDrawingSession.DrawRectangle()绘制一个矩形。在该矩形内,我有一些文本。该文本已使用CanvasDrawingSession.DrawText()绘制。与其单独绘制,不如将其与文本合并为单个Image(CanvasBitmap / IcanvasImage),我想绘制该文本。使用CanvasDrawingSession.DrawImage()的图像。我知道要绘制图像,但是我不知道将其组合成单个图像。有什么办法吗?

uwp-xaml win2d
1个回答
0
投票

您可以先创建一个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);
}
© www.soinside.com 2019 - 2024. All rights reserved.