問題タブ [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.

0 投票する
3 に答える
271 参照

xaml - RenderTargetBitmap が WebView のスケーリングを台無しにする

RenderTargetBitmap.RenderAsync のオーバーロードが WebView のスケーリングをめちゃくちゃにする非常に単純な再現ケースがあります。MainPage にあるのは、WebView とボタンだけです。

コード ビハインドには単純なイベント ハンドラしかありません

RenderAsync を呼び出す前のページは次のようになります。

RenderAsync の前

そして、これは呼び出し後に何が起こるかです:

RenderAsync の後

これを防ぐ理由と方法はありますか?私が電話した場合にのみ発生することに注意してください

しかし、スケーリングなしでオーバーロードを呼び出す場合はそうではありません

編集:私が受け取った最初の回答により、ここでアスペクト比が問題ではない理由を明確にしたいと思いましたが、実際に問題があることを証明する目的のみに役立ちます。次のシナリオを考えてみましょう - 低解像度のスクリーンショットだけが必要な非常に高い DPI 画面 - 正しい比率で縮小しても、WebView は台無しになります。また、私のシナリオでは、後でスクリーンショットを手動でサイズ変更することはできません。スケーリングされた寸法を使用した RenderAsync オーバーロードははるかに高速であり、その方法を使用することを本当に好みます。

0 投票する
2 に答える
1815 参照

c# - WPF ビジュアルをビットマップに非同期的にレンダリングする

私は、WinRT RenderTargetBitmap が "RenderAsync(visual);" を介して Visual を非同期的にレンダリングできることを確認しました。方法。残念ながら、.net RendertargetBitmap には RenderAsync メソッドがありません。.net RenderTargetBitmap が WPF ビジュアルの非同期レンダリングを許可するための回避策または拡張機能はありますか? 事前に助けてくれてありがとう!

0 投票する
1 に答える
944 参照

c# - 「空の」ファイルを作成する PngBitmapEncoder

データを表示する DVC チャートがあります。グラフをエクスポートするボタンを作成しました。

コードは次のとおりです。

したがって、私の問題は、ファイルが基本的に空であることを除いて、これが適切に実行されることです。サイズが1KBのファイルしかなく、グラフはありません。

MSDN のドキュメントやその他のスタック オーバーフローの例を見てきました。それらはすべてこの形式に従っており、人々はそれが機能すると主張しています. デバッガーで実行したところ、renderBitmap オブジェクトは必要なすべてのプロパティで正しい高さと重量の値を取得しています。何か案は?

0 投票する
1 に答える
4894 参照

c# - 凍結できない凍結可能オブジェクトを凍結する方法

私のシナリオでは、バックグラウンド タスクでレンダリングする前に、変更されていない BitmapCacheBrush をフリーズしたいと考えています。残念ながら、「この Freezable は凍結できません」というエラーが表示されます。フリーズ可能なオブジェクトではなくフリーズする回避策やハッキーな方法はありますか? この目標を達成するために、リフレクションを介して適切なプロパティを設定することは可能でしょうか? よろしくお願いします。

編集:(要求された私のサンプルコード)

0 投票する
2 に答える
469 参照

c# - 表示されていない UserControl のスナップショットを作成する

まだ表示されていない UserControl のスナップショットを撮りたいです。それが私のコードです:

このコードは、アプリの起動時に「MyViewModel」ごとに実行されます。「MyViewModel」には、タブのコンテンツである「SubViews」のリストが含まれており、「F1」から「F12」を使用してボタンをアクティブにできる「FunctionKeyBar」が含まれています。しかし、スクリーンショットを作成した後、F1 から F12 を使用できなくなりました。また、言語の切り替えなど、他の問題もあります。表示されていないコントロールのスナップショットを作成する別の方法はありますか?

すべての返信に感謝します。

こんにちはベニー

0 投票する
0 に答える
219 参照

c# - アプリがフォアグラウンドにない場合、RenderTargetBitmap.GetPixelsAsync() は HResult 0x80004005 "Unspecified error" をスローします

アプリの Suspending イベントで RenderTargetBitmap を保存しています。アプリを開いて、Visual Studio で [サスペンドとシャットダウン] をクリックすると、すべて問題ありません。しかし、最初にスタート画面に移動するか、別のアプリを開いてしばらく待つと、つまり、アプリがフォアグラウンドにない場合、RenderTargetBitmap.GetPixelsAsync() メソッドは、HResult 0x80004005 と「特定できないエラー」の説明でこの COMException をスローします。実際の使用では、ユーザーがアプリから別のアプリに切り替えたときに中断が発生することを考えると、このエラーはほとんど常に発生します。definetelly で保存している RenderTargetBitmap は、この時点では null ではありません。これは、確認しているためです。

また、開発中に、アプリから別のアプリに切り替えてから元に戻すと、アプリが中断されずにすぐに開いた場合でも、一部の画像がガベージ コレクションのように UI に表示されないことに気付きました。まだ参照されていることを考えると、これはかなり奇妙です。上記の問題に関連しているかどうかはわかりませんが、可能性のようです。

誰かが同様の問題を経験しましたか? アプリが画面から消えたときに、これらの画像で正確に何が起こっているのでしょうか?

編集:

ここに例があります。Xaml:

コードビハインド:

モバイルでアプリを起動し、「レンダリング」ボタンをクリックします。その後、[スタート] を押してアプリを画面から外し、しばらく (10 秒で十分です) 待ってから、Visual Studio の [デバッグの場所] バーにある [中断してシャットダウン] を押します。COMException を観察します。

0 投票する
1 に答える
348 参照

wpf - WPF RenderTargetBitmap がバックグラウンド スレッドの変更からバインディング値を更新したことを確認する

バックグラウンド スレッドでバインドされたプロパティを変更した後、更新されたレンダリングを一貫して取得できないという点で、RenderTargetBitmap に問題があります。

ここに私が持っているものがあります:

残念ながら、コントロールが新しい値で更新される前にレンダリングを取得している時間の約半分と、正しく更新されている残りの半分です。

私が理解していることから、WPF はプロパティ変更通知を UI スレッドに自動的にディスパッチします。レンダリングを実行する前に、これらのディスパッチされた通知がすべて処理されるようにするにはどうすればよいですか? Dispatcher スレッドで更新されていることを確認すれば、このコードは正常に機能しSomeBoundPropertyますが、この特定のアプリケーションには理想的とは言えません。

助言がありますか?

0 投票する
0 に答える
494 参照

c# - RenderTargetBitmap がメモリ不足を引き起こす

この問題でスレッドが回っているのを見たことがありますが、問題の解決策が見つからないようです。ユーザーが独自のキャンバスを作成できるアプリケーションがあります。この例では、ユーザーが 745px x 1045px のキャンバスを 150 個作成するとします。現在、ユーザーがこれらすべてを個別の PNG ファイルにエクスポートできる機能があります。これを行う私の方法は次のとおりです。

約 45 個の画像の後、アプリケーションは次の行で中断します: renderBitmap.Render(surface); 発言: プログラムの実行を続行するにはメモリが不足しています。

これで、このプロセスが少しメモリを浪費する可能性があることを理解しましたが、画像がレンダリングされて PNG としてエクスポートされた後、次の画像に進む前に何らかの形で破棄できるはずです。どうすればいいのかわかりません。どんなアドバイスでも大歓迎です!

0 投票する
3 に答える
3583 参照

c# - Image を ImageSource に変換する方法

正しい質問をしているかどうかさえわかりません。前もってお詫び申し上げます。いくつかの PNG をキャンバスに書き込んでいますが、同時に PNG をビットマップにコピーしたいと考えています。PNG がキャンバス上と同じ場所にビットマップ上に表示されるようにします。

これはコード スニペットです。

ただし、「この行で「System.Windows.Controls.Image」から「System.Windows.Media.ImageSource」に変換できません」というエラーがスローされます。

何らかの方法で画像を ImageSource に変換できれば、このエラーは解決しますか、それともすべて間違っていますか?

ありがとう!