問題タブ [rendertargetbitmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - DrawingVisual を継続的に削除および再追加すると、メモリ使用量が常に増加するのはなぜですか?
Canvas
a内で aを使用し、オーバーライドして a になる WPF プログラムがあります。これは次のようWindow
になります。Graphics_Canvas
(私はそれをオンラインのどこかから入手しましたが、少し前だったのでどこにあったか思い出せません。)
とにかく、このプログラムでは、ユーザーがGraphics_Canvas
中央のマウスでドラッグすることで、に表示されているグラフィックスをパンできます。これにより、(パンを続けている限り) 次のようなものが継続的にトリガーされます。
したがって、私は継続的に削除してから再度追加しdataVisual
ます。
メモリの使用状況を見て気づいたのは、パニングするとメモリの使用量が増加し、再び減少する一方で、以前の状態にはまったく戻らないということです。これは、ディスプレイに何も表示されていない場合はさらに顕著であり、事実上何も追加し直さないためのメモリ使用量は数百 MB に達する可能性があり、パンが停止するとほとんどが低下します。
詳細については、が描画される をGetDataDrawingVisual()
返すを追加する必要があります。これ自体は、そのメソッドの外部には保持されません。Visual
RenderTargetBitmap
私の質問は、なぜこれによりメモリ使用量が大きく変化するのですか?
現在のところ、これは興味深い厄介な問題ですが、最初から利用可能なメモリがもっと限られている場合は、問題になる可能性があると予測できます。
どんな洞察も大歓迎です。
* 更新 (2013 年 3 月 21 日) *
で実験したGraphics_Canvas
ところ、次の方法は解放されないメモリの量にかなりの影響を与えるようです。
テストとして代わりに aを返すと、new DrawingVisual()
再描画が終了した後、メモリはほとんど元の場所に戻ります。
ただし、このメソッドを削除すると、Canvas
が実行されなくなり、エラーが発生します。舞台裏のどこかで .NET がVisual
このメソッドから返された への参照を作成し、後で参照解除していない可能性がありますか? どうすればこれを並べ替えることができますか? (注: コードでこのメソッドを明示的に呼び出すことはありません。別の場所から呼び出されます)。
wpf - TallComponents PDF Rasterizer.NET convertToWPF メモリ エラー
TallComponents PDF Rasterizer を使用して PDF をラスタライズしようとしています
tiffに行くとうまくいきます.. ConvertToWpfにしたかったのですが..
私は彼らに直接この質問をしましたが、応答はありません..
だから、私は彼らのサンプルコードに従いました..
1ページしかないpdfを使用すると機能します..
1 ページを超える PDF を使用すると、メモリ不足のエラーが発生します。
1ページ以上のPDFを使用して2ページ目から開始し、最初のページをスキップすると機能します.すべてのページが空白になりますが、最初のページのみをラスタライズできると言って.
試用版だからメモリエラーになるの?
c# - イメージ コントロールはキャンバスよりも多くのメモリを使用します。なんで?
キャンバスを使用して、WPF でいくつかの長いコンテンツ (たとえば、数ページのテキスト、画像、図形など) をレンダリングしました。Scale変換を使用してスケーリングすると、スケーリングされ、メモリ使用量が制御されました。今、私はキャンバスでいくつかの画像コントロールを使用し、上記の内容をレンダリングするという考えを持っています. しかし、同じようにスケールアップするとメモリが大量に増加し、スケールダウンするとメモリが減少します。何が問題になる可能性があります。
私が使用したコード:
c# - XAML ではなくコードで UserControl をレンダリングする
RenderTargetBitmap
XAML を記述することなく、UserControl をビットマップにレンダリングするために使用したいと考えています。これを行うと、空白の画像が表示されます。重要なステップが欠けていますか?
c++ - WinRT (8.1) で MediaElement から現在のフレームをどのようにキャプチャしますか?
MediaElement を介してビデオを表示する WinRT アプリにスクリーンショット機能を実装しようとしています。次のコードがあります。MediaElement のサイズのスクリーンショットを保存しますが、画像は空 (完全に黒) です。さまざまな種類のメディア ファイルで試しました。Surface RT で Win Key + Vol Down を実行すると、スクリーン ショットにメディア フレームのコンテンツが含まれますが、次のコードを使用すると、全体が黒くなります :(
ここで、MultimediaItem は、特に文字列である UniqueId プロパティを持つビュー モデル クラスです。
「Player」はメディア要素の名前です。
コードに何か問題がありますか、それともこのアプローチが間違っているので、C++ で塹壕に入る必要がありますか?
PS 私は WinRT API のみに興味があります。
Update 1 RenderTargetBitmap はこれをサポートしていないようです。DirectX C++ を使用してそれを行う方法についての指針をいただければ幸いです。これは私にとって大きなタスクなので、何らかの方法で解決し、解決策を報告します。
c# - ViewPort3D の外側の RenderTargetBitmap および Viewport3D レンダリング マージン
奇妙な問題ですが、RenderTargetBitmap 関数が ViewPort3D の左側の余白をレンダリングしていることがわかりました。ビットマップ (この場合は PNG) を保存すると、最終イメージの左側にギャップがあり、右側が同じ量だけ切り取られます。ViewPort3D のサイズは、高さ 550 ピクセル、幅 1024 ピクセルです。RenderTargetBitmap メソッドで同じ寸法を使用します。なぜ定義された境界の外に出るのか、私は困惑しています。
そして背後にあるコード (VB で - 申し訳ありません):
それが入っているコンテナ(グリッド)が問題かもしれないと思っています。
writeablebitmap - RenderTargetBitmap は常に DrawingVisual のアンチエイリアス処理を行っています
テキストを TextBox から WriteableBitmap にレンダリングする必要があります。このコードはかなりうまく機能していますが、その中のテキストがぼやけているかアンチエイリアス処理されています。エイリアスを付けて鮮明に保つ方法についてのアイデアはありますか?
私が見つけたものはうまくいきませんでした:
また
c# - キャンバスをpng C# wpfに保存する
そのため、キャンバスのスナップショットを WPF C# で取得して、png として保存できるようにしようとしています。現在、画像には左マージンと上マージンが含まれているため、正しく保存されません。
これは私が持っているものです:
キャンバスのサイズの長方形を作成します。canvas.Margin.Left と Top が 0 に設定されている場合、保存された画像は正しいサイズですが、それでもオフセットが発生するため、下端と右端が切り取られます。Margin.Left と Top を設定してもオフセットが発生しますが、画像全体が保存されますが、ActualWidth だけでなく間違ったサイズ (margin.Left + ActualWidth) で保存されます