How to solve device lost of Win2D's CanvasControl
In some case, you may find out that when you call CanvasControl
's Invalidate()
method, the Draw
event will not be raised. Now if you watch the variable of CanvasControl
you can find the Device
property is throwing an ArgumentException
and of course the Draw
event will not be raised.
The source of this issue hasn't been found, but I do have a solution(or call it workaround), this workaround will be apply if you have the similar need:
You don't want to use
CanvasControl
to draw sth at the first time, you want to draw it later after some logical operation.
In my case, my page will receive an image and then blur it.
Here is the workaround:
- First add the attribute of
CanvasControl
in XAML:
x:DeferLoadStrategy="Lazy"
- When you are ready to draw sth, find it and prepare resource then call
Invalidate()
:
this.FindName("canvas");
//do sth
canvas.Invalidate();
Subscribe to JuniperPhoton's Blog
Get the latest posts delivered right to your inbox