問題タブ [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 投票する
2 に答える
1130 参照

c# - Viewport3D を使用した WPF RenderTargetBitmap

XamlReader で XAML UserControl を読み込んでから、RenderTargetBitmap で画像に変換しようとしています。

シンプルな UserControl で問題なく動作しています。

しかし、この Viewport3D を使用すると機能しません。画像は 3D 部分なしで作成されます... :

UserControl を画像に変換する私の方法:

何か不足していますか?

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

wpf - ImageでRenderTargetBitmapを使用してFormattedTextを表示するには?

Google で答えが見つかりません。

キャンバスに表示する文字列がたくさんあります。各文字列は、ItemsControl から呼び出される文字列コンバーター内で FormattedText() メソッドを使用して作成されます。

コードの問題は、各文字列の実際の幅はおよそ 700、実際の高さは 40 であるにも関わらず、すべての文字列を異なる位置に表示するには、RenderTargetBitmap() で非常に大きな幅と高さが必要になることです。ただし、RenderTargetBitmap() は、文字列だけでなく、描画コンテキストからのその文字列の位置も保持するのに十分な大きさである必要があります)。

フォーマットされたテキストだけの正しい実際の高さと幅を持つ単一のフォーマットされたテキスト文字列の画像を作成し、その画像を「左上」のポイントに正しく配置するにはどうすればよいですか?

ItemsControl から呼び出されるコンバーターは次のように定義されます。

補遺:

私はこれを書いて問題を解決しましたが、私の質問には答えません。(gt および lt 記号が削除されました)。

  1. 以下を含むように項目コントロールを変更しました。

    ItemsControl.ItemContainerStyle Style TargetType="{x:Type FrameworkElement} Setter Property="Canvas.Top" Value="{Binding topleft.Y}" Setter Property="Canvas.Left" Value="{Binding topleft.X}" セッターProperty="Height" Value="{Binding ft.Height}"

  2. コンバーターからすべてのポジショニングを削除しました。コンバーターは次のように読み取ります

    /li>
0 投票する
2 に答える
200 参照

image - WF 4 ワークフローを画像として保存

問題は、ワークフロー デザイナーを 1 つのシェル アプリケーションから動的に開いていて、Canvas への参照がないことです。WF4 を画像として保存することはできますが、画像が正しく保存されず、左マージンと上マージンが含まれています。多くの記事に従って機能させましたが、成功しませんでした。以下の記事も参考にしました。

キャンバスをpng C# wpfに保存する

以下の関数を使用しています。キャンバスへの参照はありません。

これについて助けてください。

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

c# - キャンバスを目的のキャンバス サイズに対してのみ BMP に保存する

キャンバスにさまざまなオブジェクトがあり、移動できます..

次に、キャンバスをBMPまたはPNGに保存したい..問題なく動作します。

ただし、キャンバスの外側にオブジェクトがある場合、出力画像は目的のキャンバス サイズになりますが、外側の要素内に収まります。

希望のサイズを正確に印刷したい.. :)

私はそれが対策と配置の問題だと思うが、それがどのように機能するかを理解していない..

コードと「悪い画像エクスポート」のサンプル画像に従ってください!

縦の白い線の右側にあるものはすべて写真に写らないでください。

ここに画像の説明を入力

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

c# - BackgroundTask & XamlRenderingBackgroundTask & RenderTargetBitmap

ライブ タイルに現在のネットワーク状態を表示するライブ タイル APP を開発しています。

私は既に XamlRenderingBackgroundTask を動作させています。XML ファイルからカスタム タイル テンプレートを読み込むことができ、RenderTargetBitmap を使用してそれを PNG ファイルにレンダリングします。

しかし、APP を起動してバックグラウンド タスクを登録すると、BackgroundTask が更新されたライブ タイルを表示し始めるまで待つ必要があります。

私の知る限り、このコードをメイン APP から使用することはできません。RendertargetBitmap には、XAML ツリーまたは XamlRenderingBackgroundTask からの要素が必要です。

では、タスクを登録した後、ライブ タイルのディレクトリを更新するにはどうすればよいですか?

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

c# - ListViewItem を UserControl 内のビットマップにレンダリングしようとするとクラッシュする

私は、選択したオブジェクトが SettingsFlyout 内から画面上の新しい場所に移動する派手なアニメーションを表示できるように、選択範囲からビットマップを生成しようとしているユニバーサル アプリに取り組んでいます。リストビューは「詳細」ビューに移行されます。

このコードが他の場所で提案されているのを見たことがありますが、うまくいかないようです。System.ArgumentException の後に「値が期待される範囲内に収まりません」というメッセージが表示されます。RenderAsync 呼び出しで。なぜそれが起こっているのですか?コードをステップ実行すると、ListViewItem が適切に検出されていることがわかりますが、レンダリングは機能しません。ItemContainerGenerator について別の言及を見ましたが、NullReferenceException が生成されました。

誰もこれを前に試しましたか?私がやりたいことは、リストビューの選択した項目を単純にコピーして、別のグリッドで使用することです。詳細について質問を編集する必要がある場合はお知らせください。

編集:別の dev からの提案により、同じページから pageRoot スタックパネルと別の TextBox をレンダリングしようとしましたが、それも失敗しました。問題はレンダリング自体にあると思います-このコードを別のものに置き換えることはできますか?

編集:開発者は、ディスパッチャーが問題になる可能性があることを示唆しました.ユニバーサルアプリではディスパッチャーの処理が異なることが判明したため、それを使用してみました-変更なし

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

wpf - GifBitmapEncoder と RenderTargetBitmap は空の gif を作成します

キャンバスとアニメーションをレンダリングしてgifを作成しようとしています。ただし、gif は常に空です。キャンバスをレンダリングするために何か特別なことをする必要がありますか?

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

c# - UIに配置せずにRenderTargetBitmap

Canvasコードで動的に生成された画像から画像を作成する Visual Studio 2013 でユニバーサル アプリを作成したいと考えています。キャンバスを UI に (Gridたとえば で) 表示すれば問題ありません。キャンバスを表示しないと、アプリがクラッシュして次のメッセージが表示されます。

値が想定範囲内にありません。

私が使用するコードがあります:

からこのコードを使用する予定なので、UI にキャンバスを表示したくありませんBackgroundTask

ここに私のサンプルプロジェクトがあります

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

c# - RenderTargetBitmap : ハンドルを解放/破棄できません

私の悪い英語でごめんなさい。

DrawingVisual をビットマップにレンダリングして、DiffuseMaterial を作成したいと考えています。私はこれをします:

しかし...

  • メソッド GetDiffuseMaterial を 10000 回使用すると、アプリケーションが停止します。すべてのアプリケーションは最大 10000 個の GDI ハンドルを持つことができ、RenderTargetBitmap は作成されるたびに 1 つの GDI ハンドルを使用するため、これは「正常」です。
  • これを回避するには、RenderTargetBitmap オブジェクトを解放します。しかし、私はそれをすることができませんでした。私はこれを試しました( mat.Freeze() と return mat; の間):

    /li>
  • もう 1 つの方法は、RenderTargetBitmap を 1 つだけ用意し、それをパラメーターとして GetDiffuseMaterial に渡すことです。
    しかし、GetDiffuseMaterial を 2 回呼び出すと、ハンドルが共有され、マテリアルが最後の変更を取得するため、2 つの同一のマテリアルが作成されます。(したがって、テキスト パラメータが同じでなくても!)

RenderTargetBitmap でやりたいことを行う別の方法がわかりません。
注意: GetDiffuseMaterial は 100 万回呼び出すことができます...

RenderTargetBitmap は、文字列テキストから DiffuseMaterial を作成するために私が見つけた最速の方法です。VisualBrush を TextBlock で使用する、DrawingBrush を使用するなど、他のテクニックは非常に遅いです。

ご協力ありがとうございました。