Hmm you probably have to loop through it, depending on how exact it has to be you probably want to not loop through on a per-pixel basis but maybe a 3x3 or 5x5 pixel basis (and not every tick) for performance reasons. A full HD image checked on a per-pixel basis would mean just above 2 million checks aka really slow. I think you would get the best result in terms of performance you´ll get by scaling whatever image you have down to a much smaller resolution (like a tenth maybe? 192x108 px) and use that for comparing rather than the full sized image.
Then you loop through that grid on the canvas (snapshot), and if there is color on the canvas (using DrawingCanvas.SnapshotAlphaAt) on that tile attemt to pick the sprite with pick overlapping point. If it is picked, that part of the tile has color and you could increase a variable to keep track of how many tiles are colored VS the amount of tiles and simply calculate the percentage from that.
Note that by picking the Sprite like this it uses the collision polygon of the sprite to check if it is overlapping or not, it may be a bit imprecise. You probably can instead use a second canvas that you copy the image on and check that DrawingCanvas.SnapshotAlphaAt against the first canvas' DrawingCanvas.SnapshotAlphaAt.
I have not tried this so no guarantees :)