Как создать SplitToneRange для SplitToneFilter в Nokia Imaging SDK

Меня немного смущает IList SplitToneRange, необходимый для SplitToneFilter.

SplitToneFilter(IList<SplitToneRange> splitToneRanges)

Как создать такие диапазоны? Я сделал следующее, но я не уверен, правильно ли я это делаю.

Windows.UI.Color c = new Windows.UI.Color();
c.R = (byte)155;
c.G = (byte)155;
c.B = (byte)155;
SplitToneRange r = new SplitToneRange(20, 80, c);
SplitToneRange r1 = new SplitToneRange(140, 200, c);

Это правильное начало? И если да, то как я могу добавить это в SplitToneRange(..).

Я пытаюсь создать IList

IList<SplitToneRange> l = new IList<SplitToneRange>(); //error

Но я получаю следующую ошибку

Невозможно создать экземпляр абстрактного класса или интерфейса System.Collections.Generic.IList<Nokia.Graphics.Imaging.SplitToneRange>


person Matthew    schedule 05.01.2014    source источник


Ответы (1)


Вы не можете создать экземпляр интерфейса (в вашем случае IList). Это не ограничение Imaging SDK, это просто то, как работает C#. Просто создайте обычный список:

List<SplitToneRange> list = new List<SplitToneRange>();

А затем добавьте к нему несколько SplitToneRanges:

list.Add(new SplitToneRange(20, 80, Windows.UI.Color.FromArgb(255, 155, 155, 155)));
list.Add(new SplitToneRange(140, 200, Windows.UI.Color.FromArgb(255, 30, 80, 200)));

SplitToneFilter filter = new SplitToneFilter(list);

Остальная часть вашего кода выглядит правильно (не пробовал), но обычно у вас будут разные цвета для разных SplitToneRanges, как в моем примере. Попробуйте поэкспериментировать со значениями, чтобы понять, что на самом деле делает SplitToneFilter.

person David Božjak    schedule 05.01.2014
comment
Мне пришлось создать Windows.UI.Color, как в моем исходном сообщении, потому что при создании он не принимал байтовые значения. Но в целом ваше решение сработало. Спасибо! Теперь мне просто нужно найти несколько хороших значений для ввода, чтобы создать красивый фильтр. Любые рекомендации или, возможно, ссылки на образцы других? - person Matthew; 05.01.2014
comment
@Matthew Ну, вы можете преобразовать значения в байты даже в конструкторе. - person David Božjak; 05.01.2014
comment
Я полагаю, что в версии WP8 конструктор не принимает аргументов. - person Matthew; 05.01.2014
comment
@ Мэтью, ты прав. Вы должны использовать метод Color.FromArgb. Я обновил свой образец, чтобы отразить это. - person David Božjak; 07.01.2014