Mam następujący kod:Siła renderowania kontroli WPF w pamięci
void Test()
{
currentImage.Source = GetBitmap();
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}
Kod ten ma uczynić currentImage, który jest kontrola obrazu w moim XAML do RenderTargetBitmap.
To nie działa, RTB zwraca pusty obraz, problem jest currentImage nie czyni się jeszcze i tak oczekuje się to zachowanie, myślę ...
Aby obejść ten problem, napisałem ten Kod:
void Test()
{
currentImage.Source = GetBitmap();
this.Dispatcher.BeginInvoke((Action)delegate()
{
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}, System.Windows.Threading.DispatcherPriority.Render, null);
}
Zasadniczo czekam na currentImage mają być świadczone, a następnie można uzyskać go poprawnie renderowane do mojego RenderTargetBitmap.
Czy istnieje sposób, aby działał bez obejścia tego problemu? Czy może wymusić kontrolę obrazu, aby renderować w pamięci?
dziękuję!
Uwaga: Jeśli masz skomplikowany układ, a pokazywane są i ukrywane elementy z konwerterami, możesz otrzymać nieprawidłowy układ końcowy. Oto, co musiałem zrobić, aby obejść to: http://stackoverflow.com/questions/41966704/wpf-xaml-control-converted-to-an-image-has-incorrect-layout/41966743#41966743 –