2015-09-11 3 views

Répondre

6

Vous ne pouvez pas - ceci est une partie clé de la politique fournie par CanvasControl.

Cela garantit que:

  • le drawingsession est créé et fermé au moment opportun

  • dessin

    n'est pas tentée avant que les ressources ont été créés

  • dispositif de manutention

    erreurs sont perdues manipulé

Si vous voulez forcer un rafraîchissement, vous pouvez utiliser CanvasControl.Invalidate(). Alternativement, vous pouvez trouver que vous voulez rendre à un CanvasRenderTarget hors écran (que vous pouvez appeler CreateDrawingSession). Utilisez ensuite DrawImage dans votre CanvasControl_Draw pour dessiner la cible de rendu sur le contrôle.

0

Si votre objectif consiste simplement à afficher une image, vous pouvez le faire sans être dans la méthode CanvasControl.Draw. Voici un code d'une de mes applications qui affiche une image et l'enregistre dans un fichier (PageRenderer est ma classe qui fait le rendu):

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); 
    } 
}