問題タブ [writeablebitmap]
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.
.net - WriteableBitmapは利用できませんか?
バッファリングされた描画に関する質問に対する完璧な答えが何であるかを発見しましたが、何らかの理由で、私のバージョンのVS2008にはWriteableBitmap
?がないようです。ドキュメントに従って、関連する名前空間を含めてみました。
しかし、それは私にエラーを与えるだけです:
古いバージョンの.netなどをインストールしていますか?Visual Studioが使用しているバージョンを確認する方法はありますか?VSをサービスパック1に更新しましたが、違いはありませんでした。
silverlight - FJCore を使用して Silverlight WriteableBitmap をエンコードする
FJCore を使用して WriteableBitmap を jpeg にエンコードする方法を見つけようとしています。WriteableBitmap が生のピクセルを提供することは理解していますが、FJCore が JpegEncoder メソッドに期待する形式に変換する方法がわかりません。JpegEncoder には 2 つのオーバーロードがあり、1 つは FluxJpeg.Core.Image を受け取り、もう 1 つは DecodedJpeg を受け取ります。
FluxJpeg.Core.Image を作成しようとしましたが、画像データに byte[][,] が必要です。byte[n][x,y] ここで、x は幅、y は高さですが、n がどうあるべきかわかりません。
n は、各ピクセルにエンコードされた argb 情報に対応するため、4 にする必要があると考えましたが、試してみると、FJCore が範囲外の引数をスローするという例外が発生しました。これが私が試したものです。Raster は私の byte[4][x,y] 配列です。
memory - 書き込み可能なビットマップを破棄するには? (WPF)
少し前に、WriteableBitmap メモリ リークに関連する質問を投稿しました。問題に関連する素晴らしいヒントを受け取りましたが、まだ深刻なバグがあると思います / (私のミス) / (混乱) / (その他のこと)ここ。
だから、ここに私の問題があります:
Image と Button を持つ WPF アプリケーションがあるとします。画像のソースは非常に大きなビットマップ (3600 * 4800 ピクセル) であり、実行時に表示されると、アプリケーションは最大 90 MB を消費します。
ここで、イメージのソース (非常に大きなイメージ) から WriteableBitmap をインスタンス化するとします。これが発生すると、アプリケーションは ~220 MB を消費します。
画像への変更(WriteableBitmapによる)が終了し、WriteableBitmapへのすべての参照(少なくとも私が知っているもの)が(メソッドの最後で、またはそれらを設定することによって)破棄されるとき、トリッキーな部分が来ますnull に) writeableBitmap によって使用されるメモリが解放され、アプリケーションの消費量が ~90 MB に戻るはずです。問題は、返される場合と返されない場合があることです。
サンプルコードは次のとおりです。
ご覧のとおり、参照はローカルであり、メソッドの最後 (またはガベージ コレクターがそうすることにしたとき) にメモリを解放する必要があります。ただし、アプリは宇宙の終わりまで最大 224 MB を消費する可能性があります。
どんな助けでも素晴らしいでしょう。
wpf - WPFWriteableBitmapと効果
WPF WriteableBitmapクラスを使用して、アプリケーションが画像に不透明度マスクを適用できるようにすることを検討しています。
基本的に、画像として青い長方形があり、青い長方形の上に別の100%透明な緑の長方形の画像があります。
ユーザーが緑色の(透明な)画像の上にマウスを移動したときに、不透明度マスクを適用して(おそらく単純な楕円を使用して)、緑色の輝きが発生しているように見せたいと思います。
意図的にこれを行わないのは、XAMLと標準のWPF効果です。これは、非常に高性能である必要があり、最終的には楕円をより高度なブロブと交換するためです...
何かご意見は??
ありがとう!
wpf - WPF で高性能アニメーションを作成する
透明度などの効果を持つ多くのアニメーションを適用する必要がある状況にありますが、約 10 個のアニメーションが実行されていると、アプリケーションの速度が低下して停止します。:(
また、CompositionTarget.Rendering イベントを使用して、フレームごとの手動アニメーションを使用してパーティクルのような効果を実装しようとしました。これにより、特定のフレームレートで Image の Source プロパティが変更されました。繰り返しますが、これは画面上のパーティクルの最初のいくつかのインスタンスでは問題なく機能しますが、より多くのパーティクルが追加されると、パフォーマンスを維持するために必要になります。これは、どのアプリケーションでも常に難しい要求です。
アニメーション用に WPF でピクセル シェーダーを使用した経験があるかどうか、またはアニメーション用にカスタムの書き込み可能ビットマップを使用した経験がある人がいるかどうか疑問に思っていましたか?
基本的に、可能であればほとんどのアニメーション処理を GPU に任せる必要があります...
あなたが与えることができるどんな助けにも感謝します!
乾杯、マーク
silverlight - Silverlight3 では、PixelFormats と WriteableBitmap.Lock はどこに移動しましたか?
数か月前、Silverlight の WriteableBitmap クラスを使用する、Jeff Prosise のこのようなオンライン サンプルを作成しました。
今日、最新の Silverlight3 インストーラー (3.0.40624.0) でそれらを再訪すると、API が変更されたようです。
いくつかの変更点がわかりました。たとえば、WriteableBitmap 配列アクセサーはなくなりましたが、新しい Pixels プロパティで見つけたので、代わりに次のように記述します。
私は書くことができます
これらの呼び出しに似たような単純な代替品はありますか、または使用パターン自体が変更されましたか?
更新された API を使用した実際の例を教えてもらえますか?
c# - WriteableBitmap での非同期操作
ビットマップのコレクションに対して長い操作を行うアプリケーションを WPF (C#) で作成しています。アプリケーションの応答性を維持するために、別のスレッドを使用してビットマップで操作を実行し、メイン UI スレッドの進行状況バーで進行状況を報告することにしました。BackgroundWorker ならなんでもやってくれると思っていたのですが、そう簡単にはいかないようです。
次のコードがあります。
実行時に、標準のファイルを開くダイアログを使用して画像を Pictures コレクションに読み込み、次に DoLotsOfOperations() メソッドを呼び出します。しかし、単一のビットマップのいずれかのプロパティにアクセスしようとするとすぐに、InvalidOperationException が発生します。「別のスレッドが所有しているため、呼び出し元のスレッドはオブジェクトにアクセスできません」。
それは明らかに真実です - 私はビットマップをロードし、UI スレッドでコレクションを作成し、別のスレッドでコレクション要素を読み込もうとしました。だから私はさまざまなアプローチを試しました:
- コレクション全体を RunWorkerAsync メソッドのパラメーターとして渡し、e.Argument から DoWork メソッドに戻しましたが、単一のビットマップのプロパティを読み取ろうとすると、同じ例外が発生しました。
- 今回は単一のビットマップを backgroundworker の引数として渡しましたが、ビットマップのピクセルは言うまでもなく、ビットマップのプロパティを取得できませんでした。
では、別のスレッド内で (できれば BackgroundWorker を使用して) ビットマップのデータにアクセスするにはどうすればよいでしょうか?
わかりませんが、私のアプローチ全体が間違っているのかもしれません。私が達成したい一般的なアイデアは次のとおりです。
- ユーザーがビットマップを読み込み、ウィンドウに表示します。
- ユーザーがボタンをクリックすると、ビットマップで長い操作が実行されますが、UI は応答性が高く (たとえば、ユーザーは操作をキャンセルできます)、進行状況は進行状況バーに報告されます。
助けてくれてありがとう。
silverlight - ピクセル値がマイナスになる
Silverlight で書き込み可能なイメージをディスクに保存したいと考えています。
このチュートリアルを見つけました: http://kodierer.blogspot.com/2009/11/convert-encode-and-decode-silverlight.html、および EncodeJpeg メソッドに基づいてコードを作成しました。
しかし、次の場合:
例外がスローされます: 算術演算でオーバーフローが発生しました。よく見ると、色の値は -16,777,216 です。ピクセルは黒で、0 である必要があります。白のピクセルに切り替えると、値は -1 になります。
何らかのオフセットがあるかどうかを確認するために 16,777,216 を追加しようとしましたが、これは黒いピクセルでのみ機能し、白いピクセルでクラッシュします。
silverlight - UIElement から PNG - テキストが少しぼやけています
ImageTool の PNG エンコーダーを使用して画像を作成しています。
Grid
複数の を含むがありTextBlock
、それぞれTextBlock
に動的テキストが含まれています。
WriteableBitmap
を含むグリッドからを作成すると、TextBlock
ImageTool のエンコーダーを使用しWriteableBitmap
て を PNG 画像に変換します。
ただし、PNG画像を表示すると(テスト目的でファイルをハードドライブに保存しています)、テキストがわずかにぼやけて見えます。これはエンコーダまたはWriteableBitmap
クラスの問題ですか? そして - 誰かがこれを以前に経験したことがありますか?回避策はありますか?
ありがとう。