問題タブ [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 FormattedTextがランダムに消える
寸法が 25.5"x11" (レター ページの 3 倍) の 600 DPI の「三つ折り」画像を作成する必要があります。そのために、DrawingVisual、DrawingContext、および RenderTargetBitmap クラスを通じて WPF Imaging を使用しています。
たとえば、400 DPI 以下の低解像度で画像を生成すると、すべてのテキストが期待どおりに正しい位置に表示されます。ただし、画像の解像度を 500 DPI レベル以上に上げると、画像の右端に配置された特定のテキストが単純に消え、他の相対的に配置されたテキスト/図形は完全に印刷されます。それについての最もクレイジーな部分は、DPI を変更しようとすると、異なるテキストが表示/非表示になることです。あるテスト ケースでは、600 DPI では描画された FormattedTexts の 1 つのセットが欠落し、650 DPI では描画された FormattedTexts の別のセットが欠落し、700 DPI ではすべて正常に印刷されます。
以下のコード スニペットで問題を再現しました。そのまま (600 DPI) 実行すると、非常に大きな白い画像が表示されます。Dpi 定数を 400 以下に変更すると、テキストが問題なく印刷されます。
DrawingVisual クラス (VisualBitmapScalingMode、VisualTextRenderingMode、VisualEdgeMode など) 内の多くのノブを回してみましたが、役に立たなかったことに注意してください。これらの設定に関する私の調査のほとんどは、テキストが消えるのではなく、「あいまいな」テキストを修正するのに役立つ設定であることがわかりました。また、DrawingVisual または DrawingContext のガイドライン/スナップ設定のいずれについてもうまくいきませんでした。
この問題は Win7 と Win2008R2 の両方で再現されており、アプリケーションは .NET 4.5 を実行していることに注意してください。
何か案は?
c# - 可視領域の WPF スナップショット ScrollViewer
WPF でスナップショットを作成する方法を知っています。
しかし今、幅600pxのScrollViewerと1000pxのコンテンツがあります。このコードを使用し、HorizontalOffset が 0 の場合 (つまり、まったくスクロールしていない場合)、すべて問題なく、ScrollViewer-Control の画像が正常に表示されます。
ただし、ScrollView をスクロールして、同じ方法でスナップショットを作成すると。スナップショットはすべてめちゃくちゃです。
スクロールビューの「0 から 600」領域でできるように、スクロールビュー コンテンツの「400 から 1000」領域のスナップショットを作成するにはどうすればよいですか?
c# - Windows Phone 8.1 で IBuffer をバイト配列に変換する方法
Windows Phone 8.1 用のアプリケーションを作成しています。
UIElement を画像ファイルとして保存する必要があります (JPG または PNG が望ましいです)。これを行うために RenderTargetBitmap クラスを使用しています。UIElement で RenderAsync メソッドを呼び出した後、RenderTargetBitmap の GetPixelsAsync() メソッドの結果を含む IBuffer を作成します。
ここで、メソッド ToArray() を呼び出して IBuffer をバイト配列に変換し、BitmapEncoder などを使用して画像を保存する必要がありますが、Windows Phone 8.1 では IBuffer 用の ToArray() メソッドがないようですが、Windows では8.1 が存在します。
この問題を解決するにはどうすればよいですか?
c# - プログラムで作成された UIElement を画像ファイルに保存する方法はありますか?
Windows Phone 8.1 (C#) アプリケーションの JPG/PNG/BMP イメージでプログラムによって作成された UIElement を保存しようとしています。
メソッド RenderAsync() を使用してクラス RenderTargetBitmap を使用していますが、XAML コードで作成された UI 要素でのみ機能します。C# で直接作成された UI 要素で使用すると、「System.ArgumentException (値が期待される範囲内にありません。)」という例外が発生します。
私は何か間違ったことをしていますか、それともこのクラスはプログラムで作成された UIElement(s) のレンダリングを許可していませんか? Windows Phone 8.1 でこれを行う方法はありますか? ありがとうございました!
私が使用するコードは次のとおりです。
c# - コントロールのあいまいでないイメージをWPFに保存するには?
DrawingContext を使用して画像を描画しています。次に、結果を RenderTargetBitmap にレンダリングします。Canvas も同じ RenderTargetBitmap にレンダリングします。ピクセル境界は画面上ではくっきりしていますが、保存するとぼやけてぼやけてしまいます。
以下のスクリーンショットで、問題を確認できます (BitmapScalingMode = NearestNeighbor を使用)。
これは BitmapScalingMode = HighQuality です。それはより滑らかですが、鮮明できれいではありません。
これが私のコードの関連セクションです。複数の場所で RenderOptions を設定しようとしたことがわかりますが、効果がないようです。
c# - WPF C# で DrawingVisual をビットマップに変換する方法
次のコードを使用して、DrawingVisual にテキストを描画しています。RenderTargetBitmap
これを使用してビットマップに変換すると、パフォーマンスが向上すると聞きました。
そして最後に、以下のコードを使用してテキストを追加していますCanvas
:
RenderTargetBitmap
を使用して BMP に変換する場所と、それを MyCanvas に追加する方法がまったくわかりません。
RenderTargetBitmap
ドキュメントの例では、これを見つけました:
しかし、これをコードに実装する方法がわかりません。
wpf - WPF イメージ コントロールからレンダリング イメージを取得する方法
各WPF イメージ コントロールにはRenderTransformプロパティがあり、 Scale、Skew、Rotateなどの多くの変換をイメージに設定します。RenderTransformプロパティを呼び出した後、レンダリングされたイメージをBitmapImageまたはRenderTargetBitmapクラスまたはその他のクラスに取得する方法は?
これは私のコードです: