首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从画布控件获取绘图会话(win2d)

如何从画布控件获取绘图会话(win2d)
EN

Stack Overflow用户
提问于 2015-09-11 23:08:50
回答 2查看 562关注 0票数 1

在win8应用程序中,如何从画布控件(win2d)中获取绘图会话,或者如何在画布控件上从function:canvasControl_Draw中绘制图像。

EN

回答 2

Stack Overflow用户

发布于 2015-09-15 04:47:53

您不能-这是CanvasControl提供的策略的关键部分。

这可确保:

  • 在适当的时间创建并关闭绘制会话在创建资源之前不会尝试
  • 绘制
  • 处理设备丢失的错误已处理

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

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

票数 6
EN

Stack Overflow用户

发布于 2017-02-21 01:04:20

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

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32526653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档