Bonjour,
J'ai un canvas assez complexe sur lequel j'essaie de faire un WriteableBitmap pour transformer ce canvas en image.
Hors quand je cré mon Image, mon canvas n'est pas complétement chargé et l'image restitué ne contient pas tous les éléments du canvas.
Après recherche sur le msdn, j'ai créé une méthode pour parser les elements de mon canvas pour leur appliquer un Measure et un Arrange comme le recomande Microsoft, sans résultat probant.
Mon code (un peu simplifié car chaque objet du canvas est un objet complexe qui retourne sa propre taille):
Qu'en pensez vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 internal Image GetImage() { Image oImage = new Image(); Int16 nLargeurPage = Convert.ToInt16(dLargeur); Int16 nHauteurPage = Convert.ToInt16(dHauteur); foreach (UIElement uIelt in oCanvas.Children) { uIelt.UpdateLayout(); uIelt.Measure(new Size(Width de l'uielt, Height de uIelt)); uIelt.Arrange(new Rect(0, 0, (Width de l'uielt, Height de uIelt)); } oCanvas.Measure(new Size(nLargeurPage, nHauteurPage)); oCanvas.Arrange(new Rect(0, 0, nLargeurPage, nHauteurPage)); WriteableBitmap oWb = new WriteableBitmap(nLargeurPage, nHauteurPage); oWb.Render(this.oCanvas, null); oWb.Invalidate(); oImage.Source = oWb; oImage.Width = nLargeurPage; oImage.Height = nHauteurPage; return oImage; }
Partager