我遇到了同樣的問題。直接將WriteableBitmap分配給Image.Source不起作用。 一些搜索後,我發現了一個解決方法車力量它寫入WritableBitap到使用SaveJpeg方法一個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手機像素中修正了顏色不是一個字節,而是一個整數。有了這些知識和斑馬線的來源,我改變了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。看起來,圖像是正確分配的,但alpha值是透明的,創建jpeg時將其刪除。
您是否嘗試過簡單地加載圖像(即它絕對是不工作的QR部分)? – 2012-04-24 07:57:40
嗨,喬治。是的,我可以輕鬆地從文件加載圖像並將其顯示在應用程序中。 – ThomasVestergaard 2012-04-24 11:22:27
你可以保存'bMatrix'到一個文件並查看它嗎? (如果是的話,你可以加載保存的文件在你的應用程序中)? – 2012-04-24 11:26:27