0

Windows Phone アプリに画像があります。そこには、10個の値を含む配列があり、それらの値に応じて、コントラストを次のように設定しています

問題は、私が前に滑っているときは完璧です。しかし、画像を反転すると元の画像にはなりません。

私はすでに多くのことを試して研究しました

実はそのコードはコードプロジェクトサイトに属しています---

private double lastslidervalue;

private void sliderContrast_ValueChanged(object sender, MouseButtonEventArgs e)
    {
        if (sliderContrast == null) return;
        double[] contrastArray = { 1, 1.2, 1.3, 1.6, 1.7, 1.9, 2.1, 2.4, 2.6, 2.9 };
        int nIndex = (int)sliderContrast.Value-(int)this.lastslidervalue;
        if (nIndex == -1)
        {
           int nIndex=this.lastslidervalue-sliderContrast.Value
           this.lastslidervalue=sliderContrast.value
        }
        else
        {
            nIndex = (int)sliderContrast.Value-(int)this.lastslidervalue;
            this.lastslidervalue=sliderContrast.value

        }

        double CFactor = contrastArray[nIndex];
        WriteableBitmap wb;
        wb = new WriteableBitmap(wbOriginal.PixelWidth, wbOriginal.PixelHeight);
        //wb = new WriteableBitmap(imgOriginal);
        wbOriginal.Pixels.CopyTo(wb.Pixels, 0);
        int h = wb.PixelHeight;
        int w = wb.PixelWidth;
        for (int i = 0; i < wb.Pixels.Count(); i++)
        {
            int pixel = wb.Pixels[i];
            int B = (int)(pixel & 0xFF); pixel >>= 8;
            int G = (int)(pixel & 0xFF); pixel >>= 8;
            int R = (int)(pixel & 0xFF); pixel >>= 8;
            int A = (int)(pixel);

            R = (int) Math.Max(0, Math.Min(255, (((R - 128) * CFactor) + 128)));
            G = (int)Math.Max(0, Math.Min(255, (((G - 128) * CFactor) + 128)));
            B = (int)Math.Max(0, Math.Min(255, (((B - 128) * CFactor) + 128)));

            if (R > 255) R = 255; if (G > 255) G = 255; if (B > 255) B = 255;
            if (R < 0) R = 0; if (G < 0) G = 0; if (B < 0) B = 0;
            wb.Pixels[i] = B | (G << 8) | (R << 16) | (A << 24);
        }
        wb.Invalidate();
        image1.Source = wb;
    }

ここでは、スライダーの値変更イベントを使用しています....

デバッグ後、前方にスライドした後、R 値が継続的に減少していることがわかりました。ex--117,114,101,95 ですが、後方にスライドした後は R が増加するはずですが、95 の後は 76 のように減少し続けています.... 誰か助けてください........

4

1 に答える 1