問題タブ [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.
wpf - 画面外でWPF要素を作成し、ビットマップにレンダリングします
なぜこれが機能しないのか、または機能させるために何が必要なのか理解できません。
再現するには、単純なWPFアプリケーションを作成し、メインウィンドウのコンストラクターを次のように置き換えます。
これにより、画像が空になります。RTBをPNGとしてディスクに保存すると、正しいサイズですが透明になります。
ただし、画面に表示されているビジュアルを使用してこれを行うと、正常に機能します。
画面外で作成したビジュアルをビットマップにレンダリングするにはどうすればよいですか?
c# - RenderTargetBitmapおよびViewport3D-品質の問題
3DシーンをViewport3Dからビットマップにエクスポートしたいと思います。
これを行うための明白な方法は、RenderTargetBitmapを使用することです。ただし、これを行うと、エクスポートされたビットマップの品質が画面上の画像よりも大幅に低くなります。インターネットを見回すと、RenderTargetBitmapはハードウェアレンダリングを利用していないようです。これは、レンダリングがTier0で行われることを意味します。これは、ミップマッピングなどがないため、エクスポートされた画像の品質が低下することを意味します。
Viewport3Dのビットマップを画面上の品質でエクスポートする方法を知っている人はいますか?
明確化
以下の例ではこれを示していませんが、最終的にViewport3Dのビットマップをファイルにエクスポートする必要があります。私が理解しているように、これを行う唯一の方法は、画像をBitmapSourceから派生したものにすることです。以下のCplottsは、RenderTargetBitmapを使用してエクスポートの品質を上げると画像が改善されることを示していますが、レンダリングはソフトウェアで行われるため、非常に遅くなります。
ハードウェアレンダリングを使用して、レンダリングされた3Dシーンをファイルにエクスポートする方法はありますか?確かにそれは可能であるはずですか?
このxamlの問題を確認できます。
そしてこのコード:
wpf - ContentControl + RenderTargetBitmap + 空の画像
これらのチャートを画面に表示することなく、いくつかのチャート画像を作成しようとしています。私はかなり長い間これに携わっていて、さまざまなことを試しましたが、何もうまくいかないようです。最初にチャートをウィンドウに表示すると、コードは完全に機能しますが、ウィンドウに表示しないと、ビットマップは白と黒の境界線だけになります (理由はわかりません)。
レンダリングする前に境界線にグラフを追加して、境界線に緑色のborderBrushを追加しようとしました。ビットマップでは、緑の borderBrush が表示され、次に黒の境界線と白の背景が表示されますが、グラフは表示されません。チャートは黒いボーダーに含まれていないので、それがどこから来ているのかわかりません。
window.Show() を呼び出さずにチャートをウィンドウに追加しようとしましたが、再び黒いボーダーと白い背景が表示されます。ただし、window.Show() を呼び出すと、ビットマップにチャートが含まれます。
hereで説明されているように、drawingVisual を使用してみましたが、同じ結果です。
コードは次のとおりです (境界線またはウィンドウへの要素の追加は含まれません)。
注: グラフは ContentControl です。
最初にウィンドウに表示せずにチャートをレンダリングする方法はありますか?
wpf - RenderTargetBitmap + Resource'd VisualBrush = 不完全な画像
「Visual to RenderTargetBitmap」の質問に新たなひねりを加えました!
デザイナー向けに WPF のプレビューをレンダリングしています。つまり、WPF ビジュアルを取得して、そのビジュアルを表示せずにビットマップにレンダリングする必要があります。ここでそれを見るのと同じように、それを行うための素敵な小さな方法を手に入れました
私のFrameworkElementにVisualBrushがある場合、そのブラシは最終的にレンダリングされたビットマップにはなりません。このようなもの:
それ以外はすべてビットマップにレンダリングされますが、その VisualBrush は表示されません。明らかな Google ソリューションが試みられ、失敗しました。RTB されたビットマップにない VisualBrushes について具体的に言及しているものでさえ。
これはリソースであり、遅延リソースがインライン化されていないことが原因である可能性があるという卑劣な疑いがあります。したがって、可能な修正は、何らかの方法で (???)、レンダリングの前にすべての静的リソース参照の解決を強制することです。しかし、私はそれを行う方法がまったくわかりません。
誰でもこれを修正できますか?
wpf - Viewport3D で RenderTargetBitmap を使用する
Viewport3d を使用し、継承された UIElement3D クラスを使用して 3D 要素を表示します...ビューポートのさまざまな画像 (さまざまなビュー) を作成したいと考えています。つまり、実行時に新しい viewport3d を作成し、その画像に特定のビューを適用する必要があります..
次のコードを参照してください。
最初の画像 (test_xamlviewport.png) は正しく表示されていますが、独自の Viewport3D オブジェクトを作成して印刷した 2 番目の画像 (test_localviewport.png) は空です。
UIElement3D オブジェクトを強制的にレンダリングするにはどうすればよいですか? または、新しいビューポートを作成して既存の XAML ビューポート インスタンスを印刷すると機能しないのはなぜですか?
ここで、私の問題を再現するサンプル ソリューションを見つけます http://cid-df67ca3f85229bd1.office.live.com/self.aspx/Development/WpfApplication2.zip
よろしくローランド
asp.net - ASP.NET で WPF UIElement のビットマップを生成する
WPF 境界からビットマップを生成しようとしています。全体は、.net 4.0 を実行する asp.net アプリ (もちろんサーバー側) にあります。
問題は、生成された画像が空であることです。誰かが理由を知っていますか?
これがコードです。
正しい幅と高さの画像が返されると言ったように、結果はかなり悪いですが、空なので、スレッドビットで台無しにしないと思います。
wpf - RenderTargetBitmap の代わりに WPF をハードウェア レンダリングと組み合わせて使用する
私が構築した WPF アプリケーションには、あらゆる種類の UIElement3D オブジェクトを含む Viewport3D があります。今、特定のビューの高解像度スナップショットをファイルに保存したいと考えています。過去に RenderTargetBitmap を試したことがありますが、次の欠点があるため、このアプローチは好きではありません。
- メモリ リーク (少なくとも .NET 3.5 SP1 では)。ただし、4.0 で解決されるはずですが、まだテストしていません。
- アンチエイリアシングとピクセル シェーダを使用すると、ソフトウェア レンダリングはハードウェア レンダリングと同じ結果になりません。
- RenderTargetBitmap は、画面に表示するのに数分の 1 秒かかるのではなく、画像を形成するのに多くの時間 (10 秒など) を必要とします。
したがって、スナップショットのコピーを含む VisualBrush を新しいコントロール/ウィンドウ (できればオフスクリーン) で使用し、DirectX または GDI 技術を使用してフロントバッファーまたはバックバッファーを介してコンテンツを取得することが可能かどうか疑問に思います。グラフィックカードの能力を超える解像度が問題になる可能性があると想像できましたが、それは複数のサブイメージを取得し、後でそれらをつなぎ合わせることで解決できます. では、このトピックに関するアイデアをお持ちの方はいますか?
私は DirectX、XNA、SlimDX、GDI+、BitBlt などについて読んだことがありますが、これらの問題に関する私の経験はこれだけです。ターゲット プラットフォームは Windows XP+ です。解決策が可能であるが XP ではない場合、私も知りたいです。
よろしくお願いします、
ヤン・ファン・デ・ポル
wpf - ピクセル シェーダを RenderTargetBitmap にレンダリングできません! 助けてください!
関連付けられたピクセル シェーダーを持つコントロールを RenderTargetBitmap にレンダリングする機能をテストするために、非常に単純な WPF アプリケーションを作成しました。次に、ビットマップをファイル (jpeg) に書き込みます。コントロールはビットマップにレンダリングされますが、ピクセル シェーダー効果はコントロールに適用されません。
コードと XAML は次のとおりです。
XAML:
wpf - RenderTargetBitmap で PixelFormats.IndexedX を使用するには?
以下のように、このビットマップを a の背景として設定するビューをDrawingVisual
使用して、a (例ではビジュアル) をビットマップにレンダリングしようとしています。RenderTargetBitmap
Canvas
PixelFormats.Default
の最後の引数としてを使用するRenderTargetBitmap
と、イメージは期待どおりにレンダリングされます。ただし、PixelFormats.Indexed2
(またはのいずれかPixelFormats.IndexedX
) を選択すると、コードは例外なくメソッドを終了するように見えます。このbmp.Render
行は呼び出されないため、画像は に表示されませんCanvas
。
IndexedX
でピクセル形式を使用するにはRenderTargetBitmap
? または、イメージのメモリ フットプリントを削減する他の方法はありますか? 3 色しか使用しないため、32 ビット RGB ではなくパレットを使用する方法が適しているように思われました。
wpf - オプションのハードウェア アクセラレーションを RenderTargetBitmap に追加する
Image.Source で使用するイメージを生成できる RenderTargetBitmap の代替手段はありますか? .NET 3.5 sp1 でハードウェア アクセラレーションは実行されますか? .NET 4.0 の回答は問題ありませんが、使用できない可能性があります。
役立つと思うなら、人々はこれに投票するべきです...私のように。