私は同じ問題に遭遇します。WriteableBitmap を Image.Source に直接割り当てても機能しませんでした。いくつかの検索の後、SaveJpeg メソッドを使用して WritableBitap を MemoryStream に書き込む強力な回避策を見つけました。
using (MemoryStream ms = new MemoryStream())
{
asBitmap.SaveJpeg(ms, (int)asBitmap.PixelWidth, (int)asBitmap.PixelHeight, 0, 100);
BitmapImage bmp = new BitmapImage();
bmp.SetSource(ms);
Image.Source = bmp;
}
QRコードが黒/白ではなく、濃い/水色で表示されていない限り、これは機能しました。これを友人に話したところ、彼は、Windows Phone のピクセルの色はバイトではなく整数であることを思い出しました。この知識と zxing のソースを使用して、ByteMatrix.ToBitmap メソッドを次のように変更しました。
public WriteableBitmap ToBitmap()
{
const int BLACK = 0;
const int WHITE = -1;
sbyte[][] array = Array;
int width = Width;
int height = Height;
var pixels = new byte[width*height];
var bmp = new WriteableBitmap(width, height);
for (int y = 0; y < height; y++)
{
int offset = y*width;
for (int x = 0; x < width; x++)
{
int c = array[y][x] == 0 ? BLACK : WHITE;
bmp.SetPixel(x, y, c);
}
}
//Return the bitmap
return bmp;
}
これにより、WritableBitmap を Image.Source に直接割り当てても、問題はまったく解決されました。画像は正しく割り当てられているように見えましたが、アルファ値は透明で、jpeg の作成時に削除されました。