0

こんにちは、Windows phone でWriteableBitmapExを使用しようとしていますが、コードが機能していません...これで何が間違っていますか?

        double height = image1.ActualHeight;
        double width = image1.ActualWidth;
        BitmapImage img = new BitmapImage(new Uri("Tulips.png", UriKind.RelativeOrAbsolute));
        BitmapImage newImg = image1.Source as BitmapImage;

        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {

                int grayScale = (int)((image1.writeableBmp.GetPixel(j, i).R * 0.3) + (image1.writeableBmp.GetPixel(j, i).G * 0.59) + (image1.GetPixel(j, i).B * 0.11));
                Color nc = Color.FromArgb (grayScale, grayScale, grayScale);
                newImg.SetPixel(j, i, nc);

            }
        }
4

1 に答える 1

2

BitmapImage( )を変更しようとしていnewImgます。次のものを作成する必要がありますWriteableBitmap

var newImg = new WriteableBitmap(image1.Source);

後でビットマップ イメージを変更できるようにします。

次に ( WriteableBitmapExgrayScaleを参照している場合)から式のピクセル値を直接取得できるはずですnewImg

byte grayScale = Convert.ToByte((newImg.GetPixel(j, i).R * 0.3) + 
    (newImg.GetPixel(j, i).G * 0.59) + (newImg.GetPixel(j, i).B * 0.11));

そして、次Color.FromArgbのようなステートメントもあります。

Color nc = Color.FromArgb (255, grayScale, grayScale, grayScale);
于 2012-06-25T14:06:14.413 に答える