4

ウィンドウのコンテンツを画像に保存し、保存してウィンドウを閉じる必要があります。Loaded イベントでウィンドウを閉じると、一部のアイテムが正常に描画されたウィンドウが含まれている画像、一部のアイテムは半分しか描画されていない、または歪んでいるが、他のアイテムは画像上にありません。

タイマーを設定し、一定時間 (ウィンドウの複雑さに応じて 250 ミリ秒から 1 秒の間) 後にウィンドウを閉じると、画像はすべて問題ありません。

ウィンドウが完全にレンダリングされるまでに時間がかかるようです。レンダリングが完了したことがわかっているときにタイマーを使用してウィンドウを閉じるのを避けるために、このレンダリングがいつ完了したかを知る方法はありますか?

ありがとう。

4

3 に答える 3

12

ContentRenderedイベントを探していると思います

于 2012-04-26T09:19:04.167 に答える
2

作業中のアプリケーションで同様の問題が発生しました。次のコードを使用して解決し、試してみて、役立つかどうかをお知らせください。

 using (new HwndSource(new HwndSourceParameters())
                   {
                       RootVisual =
                           (VisualTreeHelper.GetParent(objToBeRendered) == null
                                ? objToBeRendered
                                : null)
                   })
        {
            // Flush the dispatcher queue
            objToBeRendered.Dispatcher.Invoke(DispatcherPriority.SystemIdle, new Action(() => { }));

            var renderBitmap = new RenderTargetBitmap(requiredWidth, requiredHeight,
                                                      96d*requiredWidth/actualWidth, 96d*requiredHeight/actualHeight,
                                                      PixelFormats.Default);

            renderBitmap.Render(objToBeRendered);
            renderBitmap.Freeze();                

            return renderBitmap;
        }
于 2012-04-26T10:00:43.550 に答える