3

数か月前、Silverlight の WriteableBitmap クラスを使用する、Jeff Prosise のこのようなオンライン サンプルを作成しました。

今日、最新の Silverlight3 インストーラー (3.0.40624.0) でそれらを再訪すると、API が変更されたようです。

いくつかの変更点がわかりました。たとえば、WriteableBitmap 配列アクセサーはなくなりましたが、新しい Pixels プロパティで見つけたので、代わりに次のように記述します。

 bmp[x]

私は書くことができます

bmp.Pixels[x]

これらの呼び出しに似たような単純な代替品はありますか、または使用パターン自体が変更されましたか?

bmp = new WriteableBitmap(width, height, PixelFormats.Bgr32);
bmp.Lock();
bmp.Unlock();

更新された API を使用した実際の例を教えてもらえますか?

4

2 に答える 2

2

新しい WriteableBitmap への切り替えに関するもう 1 つの重要な詳細は、この回答に記載されています...ピクセル形式が常に pbgra32 になったため、各ピクセルにアルファ値を設定する必要があります。そうしないと、真っ白な画像が得られます。つまり、以前は次のようなピクセル値を生成していたコード:

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 0;                        // unused

次のように変更する必要があります。

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 255;                      // alpha
于 2010-01-17T16:02:44.370 に答える
1

コンストラクターを使用せずに使用するLockとどうなりますか?物事は壊れますか?UnlockWritabelBitmap(int, int)

SL3ベータ版とリリースの間でこのAPIが変更されたようです。Breaking Changes Document Errata(Silverlight 3)を参照してください

于 2009-12-01T17:47:56.400 に答える