問題タブ [bitmapsource]
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 - Image Source で使用できる唯一のタイプは BitmapSource ですか?
Image コントロールのコンテンツとして Bitmapsource オブジェクトを使用できますが、Bitmap オブジェクトしかない場合は、次の方法を使用して Bitmap を Bitmapsouce に変換すると、直接使用できます。
時間がかかります。Bitmap を直接使用する方法はありますか?
また、BitmapSource は直接解放できないようです。BitmapSouce が再び使用されなくなった後、すぐにメモリを解放するサンプル メソッドはありますか。
wpf - BitmapSource を WPF の画像ソースとして使用する
イベントによってソースの更新が必要であると判断されるたびにソース イメージを変更することで、XAML の Image (_browserScreenshot below) オブジェクトを更新しようとしています。今私はこれを持っています:
次に、次のようなイベント ハンドラーがあります。
このイベントが発生するたびに、新しいスクリーンショットが取得され、イメージのソース (ここでは _browserScreenshot と呼ばれます) コントロールが更新される必要があります。IsFrozen プロパティを変更するとエラーが発生し続けますが、これを正しく変更する方法がわかりません。よろしくお願いします。
wpf - TiffBitmapDecoder.FramesからTIFFページを取得できません-すべてのフレームはページ1です
複数ページのtiff画像を複数ページのXPSドキュメントに変換しようとしています。私が抱えている問題は、TiffBitmapDecoderとそのBitmapFramesにあります。
コードは次のとおりです。
これにより、正しいページ数のXPSが作成されます。ただし、すべてのページは、tiffの最初のページのレプリカです。実際、1つのフレーム(たとえば、dec.Frames [4])を取り出してディスクに書き込むと、最初のページのように見えます。
私はここで何を間違っているのですか?フレームは実際には画像の個々のページではありませんか?どうすればそれらを取り出して一緒に作業できますか?
wpf - BitmapSource の部分領域の描画
2D タイル ベースのゲーム用に WPF でレベル エディターを作成しています。Image
タイルセットファイルを読み込み、各タイルを適切な場所にレンダリングしてマップを再構築する最善の方法を見つけようとしています。
Image
現在、 をとしてロードしており、マップを表示するコントロールのクラスBitmapSource
から派生しています。を取得できるようにメソッドCanvas
をオーバーライドしています。ただし、画像のサブレクトのみを描画する適切なオーバーロードがないようです。画像全体を描画する必要があるようです。OnRender
DrawingContext
DrawingContext.DrawImage
Image
のサブレクトを に描画したい場合、何を使用すればよいCanvas
ですか? または、以外のものを使用する必要がありCanvas
ますか?
wpf - WPF が大きな BitmapSource をメモリから確実に解放するにはどうすればよいですか?
システム: Windows XP SP3、.NET 3.5、4GB RAM、デュアル 1.6GHz
非常に大きな PNG を (ストーリーボード アニメーションを使用して) 読み込んで遷移させる WPF アプリケーションがあります。これらの PNG の解像度は 8190x1080 です。アプリケーションが実行されると、画像がキャッシュされているように見え、システム メモリが徐々に増えていきます。最終的にはシステムを停止させ、OutOfMemoryException をスローします。
これを解決するために私が現在取っている手順は次のとおりです。
1) アプリから BitmapSource オブジェクトを削除しています
2) BitmapSource をロードするときに、BitmapSource BitmapCacheOption を None に設定しています。
3) BitmapSource がロードされたら、それをフリーズしています。
4) ソースを使用するイメージへのすべての参照と、ソース自体への参照をすべて削除します。
5) 上記の手順が完了した後、手動で GC.Collect() を呼び出します。
WPFがこれらの画像のメモリにハングアップする理由と、それらの読み込みに使用されたメモリが適切に回復されるようにするための解決策を見つけたいと思っています。
c# - C# での画像読み込みメモリ リーク
大量の画像をロードするアプリケーションにメモリ リークの問題があります。私は C# にかなり慣れていないので、メモリ リークの問題に悩まされていた日々は過ぎ去ったと思いました。問題がわかりません - 正しく処理されていない管理されていないモジュールを使用している可能性がありますか?
私の問題を説明するために、問題の原因の核心を単純化し、これをクリーンなプロジェクトに移動しました。これはすべて、元のアプリケーションを反映していないばかげたコードであることに注意してください。テスト アプリケーションには 2 つのボタンがあり、2 つのイベントをトリガーします。
ボタン 1 - 作成: オブジェクトを datacontext に設定します。これにより、画像が読み込まれ、オブジェクトを DataContext に設定することで画像が維持されます。
ボタン 2 - クリーンアップ: 画像を再び保持する SillyImageLoader を保持している参照を手放すと、これは削除されると理解しています。また、ガベージ コレクションを明示的にトリガーして、参照を削除した直後にメモリの量を確認します。
テスト時に、974KB の jpeg 画像をロードしています。これの 30 個のビットマップ表現を保持すると、アプリケーションのメモリ使用量が ~18MB から ~562MB に増加します。Ok。しかし、クリーンアップを実行すると、メモリは最大 292MB までしか減少しません。Create+CleanUp を繰り返すと、さらに 250MB のメモリが残ります。だから明らかに何かがまだ誰かによって保持されています。
SillyImageLoader コードは次のとおりです。
何か案は?問題は BitmapSource にあるようです。ビットマップのみを保持すると、メモリ リークは発生しません。これを Image の Source プロパティに設定できるように BitmapSource を使用しています。これを別の方法で行う必要がありますか?もしそうなら、メモリリークの答えを知りたいです。
ありがとう。
c# - WPFイメージはBitmapSourceを表示しません
WPFとGDIを使用するのは初めてで、画像の表示に問題があります。私の最終的な目標は、露出のようなものを構築することです。これまでのところ、画面をグレー表示し、アクティブなHWNDをすべて収集して、すべてのウィンドウの画面をキャプチャします。今のところ、ソースを設定しようとしている単一のImage要素がありますが、何も表示されません。
完全なコードはここにあります:
http : //pastebin.com/m70af590-コード
http://pastebin.com/m38966750-xaml
私は今それを持っている方法が私がやろうとしていること(ループを実行して同じ画像に何度も何度も書き込む)にはあまり意味がないことを知っていますが、私はその画像に何かを持っていることを望んでいます終わり。
表示されているウィンドウのHWNDをハードコーディングしようとしましたが、それでも機能しません。
助けてくれてありがとう!
c# - BitmapSource からアルファを削除する
BitBlt() と CreateBitmapSourceFromHBitmap() を使用して、WPF アプリケーションの Image 要素に表示できる BitmapSource としてウィンドウをキャプチャします。しかし、何らかの理由で、キャプチャするアプリケーションのほとんどは透過的です。何が起こっているかのソースとキャプチャの画像を次に示します。
(ソース: umbc.edu )
表示されているウィンドウの背景が灰色なので灰色です。私がどんな背景を与えても、ウィンドウは透けて見えます。
元の画像をより正確に反映するために、キャプチャした画像を取得するにはどうすればよいですか?
c# - BitmapSource.CreateがArgumentExceptionをスローするのはなぜですか?
ImageとBitmapSourceを使用して、生データから作成されたビットマップを取得してWPFに表示しようとしています。
ただし、BitmapSource.Createを呼び出すと、「値が期待される範囲内にありません」というArgumentExceptionがスローされます。これはこれを行う方法ではありませんか?私はその電話をきちんとかけていませんか?
wpf - WPF-ボタンのオーバー状態からBitmapSourceを生成します
ボタンからうまく生成できBitmapSource
ますが、それは常にボタンの通常の状態の画像にすぎません。
BitmapSource
ボタンのオーバー状態を生成できるようにしたい。
コードを呼び出す
VisualStateManager.GoToState((FrameworkElement)target, "MouseOver", true);
前に呼び出して、BitmapSourceを生成してみました。GUIでボタンをオーバーステートに正しく変更しますが、BitmapSource
それでも通常の状態のボタンの状態のままです。