如何从canvascontrol获取绘图(win2d)

时间:2015-09-11 15:08:50

标签: win2d

在win8应用程序中,如何从canvascontrol(win2d)获取绘图,或者如何在canvascontrol上绘制图像:canvasControl_Draw。

2 个答案:

答案 0 :(得分:6)

你不能 - 这是CanvasControl提供的政策的关键部分。

这可以确保:

  • 在适当的时间创建并关闭drawingsession

  • 在创建资源之前未尝试绘图

  • 处理设备丢失错误的处理

如果您想强制重绘,可以使用CanvasControl.Invalidate()

或者,您可能会发现要渲染到屏幕外的CanvasRenderTarget(可以调用CreateDrawingSession)。然后在CanvasControl_Draw中使用DrawImage将渲染目标绘制到控件。

答案 1 :(得分:0)

如果您的目标只是渲染图像,则可以不使用CanvasControl.Draw方法执行此操作。以下是我的一个应用程序中的一些代码,这些代码呈现给图像并将其保存到文件中(PageRenderer是我的类,用于渲染):

public async Task GenerateThumbnailAsync(IRandomAccessStream stream, int width, int height, CanvasBitmapFileFormat imageType)
{
    CanvasDevice device = CanvasDevice.GetSharedDevice();
    PageRenderer renderer = new PageRenderer(device);
    using (CanvasRenderTarget offscreen = new CanvasRenderTarget(device, width, height, 96))
    {
        using (CanvasDrawingSession ds = offscreen.CreateDrawingSession())
        {
            ds.Clear(Colors.Black);
            renderer.DrawPage(ds);
        }
        await offscreen.SaveAsync(stream, imageType);
    }
}