問題タブ [writablebitmap]

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 に答える
977 参照

c# - タスク内の WriteableBitmap の WritePixels

私はまだ読むことを理解していない小さなn00bの質問、多くのStackOverflowの回答。

colorData変数は、Kinect によって 25 回/秒更新されるバイト配列です。UI コンポーネントはありません。

WriteableBitmap と WritePixels が同じタスクのスレッドで呼び出されたと思いました。しかし、まだ System.InvalidOperationException が発生します。ループごとに新しい WriteableBitmap を作成すると、エラーは発生しません。

WriteableBitmap を効率的に再利用するには、コードをどのように修正すればよいですか?

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

windows-phone-8 - WP8 Cycletile - イメージとテキストを書き込み可能な BitmapImage にレンダリングする

現在、スケジュールされたタスク エージェント内に CycleTile を実装しようとしています。次のような Large-Tile-Images が必要です。

(左側の画像、カスタム背景、右側のテキスト) http://s7.directupload.net/file/d/3361/54hbvlby_png.htm

すべてを 1 つの画像にレンダリングし、CycleTile に「CycleImages」として設定する必要があると思います...

私の現在のコードは次のようになります。

CycleTile は IsolatedStore を読み取ります。

これを開始する方法がわかりません... UI オブジェクトをレンダリングするか、別の方法で?! ウェブでは満足のいく結果が得られません...

編集:

実行中のコード:

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

c# - WritableBitmap のロックとロック解除

に書き込もうとしてWritableBitmapいますが、非 UI スレッドでデータ処理を行いたいと考えています。Lockそのため、UI ディスパッチャからメソッドとメソッドを呼び出してUnlockおり、残りは別のスレッドで実行されます。

このコードは、必要に応じて UI ディスパッチャを明確に呼び出すため、任意のスレッドから呼び出すことができます。これは、私のコントロールが大きなストレスを受けていないときに機能します。しかし、これを 100 ミリ秒ごとに呼び出すと、すぐに次のメッセージが表示InvalidOperationExceptionされます。AddDirtyRect

{"画像のロックが解除されている間は、このメソッドを呼び出すことはできません。"}

これがどのように起こるのか理解できません。私のデバッグ出力ログLockは、私のクラスのこのインスタンスに対して実際に呼び出されたことを示しています。

アップデート

私のシナリオ全体: WPFImageコントロールで浮動小数点行列を表示できるようにするクラスを作成しています。このクラスFloatingPointImageSourceAdapterでは、API を使用してデータを設定できます

ImageSourceまた、ImageコントロールSouceプロパティをバインドできるを公開します。

内部的には、これは を使用して実装されてWritableBitmapいます。ユーザーが新しいデータを設定するたびに、ピクセルを処理してバッファに再書き込みする必要があります。BackBufferデータは高頻度で設定される予定なので、 を呼び出す代わりに に直接書き込むことにしましたWritePixels。さらに、ピクセルの再マッピングには時間がかかる可能性があり、画像が非常に大きくなる可能性があるため、別のスレッドで処理を実行したいと考えています。

フレームを落とすことで高いストレスに対処することにしました。したがってAutoResetEvent、ユーザーがいつデータの更新を要求したかを追跡する があります。そして、実際の作業を行うバックグラウンド タスクがあります。

勇気を出すために、ここでは多くのコードを削除しました。

SetData私のテストは、特定の間隔内で呼び出すタスクを作成します。

このテストを withThreadsNumber=1と with で実行するSleepTime=100と、前述の例外でクラッシュします。

更新 2

コマンドが実際にシリアルに実行されることを確認してみました。別のプライベート フィールドを追加しました

そして、whileループでそれを操作します:

メッセージの順序が何らかの形で台無しにされた場合、私Debug.Assertの s がこれをキャッチすることを期待していました。しかし、カウンターのあるものはすべて問題ありません。それらはシリアルロジックに従って正しくインクリメントされますが、それでも例外が発生しAddDirtyRectます。

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

windows-phone - WritableBitmap を IsolatedStorageFileStream に保存する

変数 WriteableBitmap の内容を IsolatedStorageFile に保存する簡単な方法はありますか? WriteableBitmap 内のピクセルを処理し、処理されたビットマップをファイル *.bmp として保存し、「保存された画像」ディレクトリに保存するプログラムを作成しています。WriteableBitmap を jpeg ファイルとして保存するコードがありますが、前に述べたように、グラフィックを圧縮したくありません。私の問題を解決するのを手伝ってください。

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

c# - 2D グラフィック マトリックス ブラー

ax、y カスタム グラフィックに 2 次元のマトリックス ポイントを表示する Matrix2D という名前の UserControl を開発しています。

奇妙なことに、Auto を Width/Height に設定すると、次のように、この Matrix2D コントロールを含むグリッドに列/行が設定されます。

期待どおりの結果が得られます (きれいなピクセル):

期待される結果 - きれいなピクセルで

次のように、Horizo​​ntalAlignment="Left" と VerticalAlignment="Top" を設定すると、期待される結果も得られます。

ただし、自動をグリッドに設定しない場合は、次のように配置も設定しません。

このぼかし結果が得られます。

ぼかし結果

このユーザー コントロールを開発するいくつかの方法を既にテストしましたが、常に同じ結果が得られました。

これは現在のバージョンです:

コード ビハインド: WriteableBitmap にデータを入力し、populationImg.Source を設定します。

RenderOptions.BitmapScalingMode="NearestNeighbor" を設定するトリックを既にテストしていますが、結果は概算であり、これは科学的グラフィックであるため、正確である必要があります。正確ではないこの結果のコーナーで確認できます。

正確でない結果

小さいグラフィックでさらに見やすく:

正確でない結果

RenderOptions.EdgeMode="Aliased" を設定しても何も変わりません。

アップデート


これは、私がこのぼかし効果を持っている理由を説明しています:

画像を適切に中央に配置するには、画像のピクセル幅と高さが偶数の場合、コンテナの幅と高さを等しくする必要があります。画像の幅と高さが奇数ピクセルの場合、それを含む要素も奇数の幅と高さを持つ必要があります。

WPFアプリケーションでのピクセルスナップから(@Nicolas Repiquetの回答で)

ただし、実際には問題を解決するのに役立ちませんでした。ユーザー コントロールをコンテナーから独立させたいと考えています。これを行う方法はありますか?