問題タブ [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.
c# - タスク内の WriteableBitmap の WritePixels
私はまだ読むことを理解していない小さなn00bの質問、多くのStackOverflowの回答。
colorData
変数は、Kinect によって 25 回/秒更新されるバイト配列です。UI コンポーネントはありません。
WriteableBitmap と WritePixels が同じタスクのスレッドで呼び出されたと思いました。しかし、まだ System.InvalidOperationException が発生します。ループごとに新しい WriteableBitmap を作成すると、エラーは発生しません。
WriteableBitmap を効率的に再利用するには、コードをどのように修正すればよいですか?
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 オブジェクトをレンダリングするか、別の方法で?! ウェブでは満足のいく結果が得られません...
編集:
実行中のコード:
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
ます。
windows-phone - WritableBitmap を IsolatedStorageFileStream に保存する
変数 WriteableBitmap の内容を IsolatedStorageFile に保存する簡単な方法はありますか? WriteableBitmap 内のピクセルを処理し、処理されたビットマップをファイル *.bmp として保存し、「保存された画像」ディレクトリに保存するプログラムを作成しています。WriteableBitmap を jpeg ファイルとして保存するコードがありますが、前に述べたように、グラフィックを圧縮したくありません。私の問題を解決するのを手伝ってください。
c# - 2D グラフィック マトリックス ブラー
ax、y カスタム グラフィックに 2 次元のマトリックス ポイントを表示する Matrix2D という名前の UserControl を開発しています。
奇妙なことに、Auto を Width/Height に設定すると、次のように、この Matrix2D コントロールを含むグリッドに列/行が設定されます。
期待どおりの結果が得られます (きれいなピクセル):
次のように、HorizontalAlignment="Left" と VerticalAlignment="Top" を設定すると、期待される結果も得られます。
ただし、自動をグリッドに設定しない場合は、次のように配置も設定しません。
このぼかし結果が得られます。
このユーザー コントロールを開発するいくつかの方法を既にテストしましたが、常に同じ結果が得られました。
これは現在のバージョンです:
コード ビハインド: WriteableBitmap にデータを入力し、populationImg.Source を設定します。
RenderOptions.BitmapScalingMode="NearestNeighbor" を設定するトリックを既にテストしていますが、結果は概算であり、これは科学的グラフィックであるため、正確である必要があります。正確ではないこの結果のコーナーで確認できます。
小さいグラフィックでさらに見やすく:
RenderOptions.EdgeMode="Aliased" を設定しても何も変わりません。
アップデート
これは、私がこのぼかし効果を持っている理由を説明しています:
画像を適切に中央に配置するには、画像のピクセル幅と高さが偶数の場合、コンテナの幅と高さを等しくする必要があります。画像の幅と高さが奇数ピクセルの場合、それを含む要素も奇数の幅と高さを持つ必要があります。
WPFアプリケーションでのピクセルスナップから(@Nicolas Repiquetの回答で)
ただし、実際には問題を解決するのに役立ちませんでした。ユーザー コントロールをコンテナーから独立させたいと考えています。これを行う方法はありますか?