В приложении win8, как получить чертеж с помощью canvascontrol (win2d) или как рисовать изображение на canvascontrol из функции: canvasControl_Draw.Как получить чертеж из canvascontrol (win2d)
ответ
Вы не можете - это ключевая часть политики, предоставляемой CanvasControl.
Это гарантирует, что:
drawingsession создается и закрывается в соответствующее время
рисунок не попытки, прежде чем ресурсы были созданы
Манипулятор потеряли ошибки обработанный
Если вы хотите принудительно перерисовать, вы можете использовать CanvasControl.Invalidate().
Кроме того, вы можете обнаружить, что вы хотите отобразить на экране CanvasRenderTarget (который вы можете вызвать CreateDrawingSession). Затем используйте DrawImage в CanvasControl_Draw, чтобы нарисовать цель рендеринга в элементе управления.
Если ваша цель - просто визуализировать изображение, вы можете сделать это, не находясь в методе 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);
}
}