Je prends une image d'un contrôle WPF en utilisant ce code:Obtenir l'image de UIElement est recadrée à la taille affichée
BitmapEncoder imgEncoder = new PngBitmapEncoder();
RenderTargetBitmap bmpSource = new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight, 150, 150, PixelFormats.Pbgra32);
bmpSource.Render(element);
imgEncoder.Frames.Add(BitmapFrame.Create(bmpSource));
using (MemoryStream ms = new MemoryStream())
{
imgEncoder.Save(ms);
bytes = ms.ToArray();
ms.Position = 0;
Image i = Image.FromStream(ms);
i.Save(@"C:\" + Guid.NewGuid().ToString() + "LARGE.png");
}
Le problème est ActualHeight/Width
propriété donne la hauteur et la largeur rendu à savoir la partie affichée. Je veux enregistrer une image de tout le contrôle même si une partie du contrôle n'est pas visible sur l'écran, c'est-à-dire qu'elle est placée dans un scrollviewer.
Comment puis-je obtenir la taille/hauteur totale d'un contrôle afin que bmpSource.Render() rende le contrôle entier à une image?
Que voulez-vous dire point visible, j'ai essayé de lui donner une nouvelle taille et d'appeler updatelayout() mais il revient à son ancienne taille? – Jon
Un point visible est un point qui est garanti pour être visible, avec les scrollviewers, il est souvent plus facile de faire défiler le viewhar rathar que de déplacer le contrôle vers la viewport. –