Яркость и контрастность с помощью ползунков в С#?

Я хочу настроить яркость и контрастность изображения с помощью двух ползунков в моем приложении для магазина Windows. Я уже много боролся. Я очень новичок в С#. Буду признателен за любую помощь. Для яркости я делаю это

private async void Page_Loaded(object sender, RoutedEventArgs e)
{
    // storage file for the image (load it)
    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/download.jpg"));

    // create a bitmap image
    BitmapImage bi = new BitmapImage();
    using (
        // Open a stream for the selected file.
        Windows.Storage.Streams.IRandomAccessStream fileStream =
            await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
    {
        // load the image into the BitmapImage
        await bi.SetSourceAsync(fileStream);

        // create a copy of the image            
        copy = new WriteableBitmap(bi.PixelWidth, bi.PixelHeight);

        // load the image into writeablebitmap copy
        fileStream.Seek(0);
        await copy.SetSourceAsync(fileStream);
    }
}

private WriteableBitmap ChangeBrightness(WriteableBitmap source, byte change_value)
{
    WriteableBitmap dest = new WriteableBitmap(source.PixelWidth, source.PixelHeight);
    byte[] color = new byte[4];

    using (Stream s = source.PixelBuffer.AsStream())
    {
        using (Stream d = dest.PixelBuffer.AsStream())
        {
            // read the pixel color
            while (s.Read(color, 0, 4) > 0)
            {
                // color[0] = b
                // color[1] = g 
                // color[2] = r
                // color[3] = a

                // do the adding algo per byte (skip the alpha)
                for (int i = 0; i < 4; i++)
                {
                    if ((int)color[i] + change_value > 255) color[i] = 255; else color[i] = (byte)(color[i] + change_value);
                }
            // write the new pixel color
            d.Write(color, 0, 4);
        }
    }
}

// return the new bitmap
return dest;
}

private void slider1_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
    if (this.slider1 != null)
    {
        // deterime the brightness to add
        byte value_to_add = (byte)((this.slider1.Value / this.slider1.Maximum) * 255);

        // get the new bitmap with the new brightness
        WriteableBitmap ret = ChangeBrightness(copy, value_to_add);

        // set it as the source so we can see the change
        this.myimage.Source = ret;
    }
}

person Pranav Mahajan    schedule 08.12.2014    source источник
comment
Почему бы не показать нам, что вы написали во время борьбы?   -  person xlecoustillier    schedule 08.12.2014
comment
Боюсь, ваш вопрос слишком широк. Stackoverflow — это не доска фриланса для реализации ваших требований. Пожалуйста, попробуйте опубликовать конкретную проблему программирования, с которой вы столкнулись.   -  person default locale    schedule 08.12.2014
comment
Было бы неплохо предоставить несколько (кодовых) примеров или подходов, которые применялись до сих пор.   -  person SSchuette    schedule 08.12.2014
comment
Взгляните на этот поток SO изображение">stackoverflow.com/questions/15408607/   -  person Alex    schedule 08.12.2014
comment
Но на некоторых динамических uri он дает значение, не попадающее в исключение ожидаемого диапазона. Кроме того, это очень медленно для большего размера изображения.   -  person Pranav Mahajan    schedule 08.12.2014
comment
@Alex: Как указать источник изображения в ссылке, которую вы предложили?   -  person Pranav Mahajan    schedule 08.12.2014
comment
@PranavMahajan, если этот код дает вам исключение, вы должны опубликовать сведения об исключении (проблемная строка кода, трассировка стека, тип исключения и сообщение).   -  person default locale    schedule 08.12.2014
comment
Ваш вопрос был слишком широким, поэтому я просто погуглил заголовок вашего вопроса и нашел эту тему на SO. Я понятия не имею, какие проблемы есть в этом коде... Я думаю, вам решать, как это понять;)   -  person Alex    schedule 08.12.2014
comment
Чтобы еще больше усложнить вам задачу — такой код должен быть написан на DirectX. Возможно и на С++ тоже!   -  person Filip Skakun    schedule 08.12.2014
comment
Файл StorageFile = await StorageFile.GetFileFromApplicationUriAsync (новый Uri (ms-appx:///Assets/download.jpg)); В этой строке, когда я извлекаю изображение из какого-либо API, я получаю это значение исключения, которое не попадает в ожидаемый диапазон.   -  person Pranav Mahajan    schedule 09.12.2014