Tôi có đoạn mã sau:Force vẽ của một điều khiển WPF trong bộ nhớ
void Test()
{
currentImage.Source = GetBitmap();
RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
rtb.Render(currentImage);
}
Mã này được cho là để render currentImage, đó là một điều khiển hình ảnh trong XAML của tôi đến một RenderTargetBitmap.
Nó không làm việc, rtb trả về một hình ảnh trống, vấn đề là currentImage không làm cho bản thân chưa và vì vậy hành vi này được mong đợi, tôi nghĩ ...
Để workaround vấn đề này, tôi đã viết này mã:
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);
}
Về cơ bản, tôi đợi hình ảnh hiện tại được hiển thị và sau đó tôi có thể hiển thị nó đúng cách cho RenderTargetBitmap của mình.
Có cách nào để làm cho nó hoạt động mà không sử dụng cách giải quyết này không? Buộc điều khiển hình ảnh hiển thị trong bộ nhớ?
cảm ơn!
Lưu ý: Nếu bạn có bố cục phức tạp và bạn đang hiển thị và ẩn các phần tử với trình chuyển đổi, bạn có thể kết thúc với bố cục cuối cùng không chính xác. Đây là những gì tôi phải làm để làm việc xung quanh nó: http://stackoverflow.com/questions/41966704/wpf-xaml-control-converted-to-an-image-has-incorrect-layout/41966743#41966743 –