在 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);
}
我的 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);
}