在win8应用程序中,如何从canvascontrol(win2d)获取绘图,或者如何在canvascontrol上绘制图像:canvasControl_Draw。
答案 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);
}
}