Как в win2d объединить DrawRect () и DrawTextLayout () в один холстBitmap? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть CanvasControl в моем XAML. С его помощью я собираюсь нарисовать прямоугольник с помощью CanvasDrawingSession.DrawRectangle (). Внутри этого прямоугольника у меня есть текст. И текст был нарисован с помощью CanvasDrawingSession.DrawText (). Вместо того, чтобы рисовать его отдельно, я хочу объединить этот прямоугольник и текст в одно изображение (CanvasBitmap / IcanvasImage), и я хочу нарисовать Изображение с использованием CanvasDrawingSession.DrawImage (). Я знаю, как нарисовать изображение, но не знаю, как объединить его в одно изображение. Есть ли способ?

1 Ответ

1 голос
/ 17 июня 2020

Вы можете сначала создать CanvasRenderTarget, а затем нарисовать на нем прямоугольник и текст. После этого передаем его методу 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);
}
...